【问题标题】:Button location error using Xpath?使用 Xpath 的按钮位置错误?
【发布时间】:2013-04-08 08:15:21
【问题描述】:

我必须使用这样的按钮测试动态应用:

 <button class="btn btn-primary btn-mini" ng-click="addAnswer(question)" ng-show="question.editing">Add Answer</button>

我试图用它来定位按钮,但我失败了

getDriver().findElement(By.xpath("//img [@ng-click='addAnswer(question)']")).click();

使用 CSS

列出 AddAnswerBtn = getDriver().findElements(By.className("btn-primary")); AddAnswerBtn.get(0).click();

找到它的正确路线是什么?我不想使用类来定位它,我想使用 Xpath 来定位按钮位置。

【问题讨论】:

  • 它是如何失败的?它给了一个例外吗?没做什么?找到错误的元素?什么?
  • 我有多个 css 类按钮......所以我不想使用它使用类和使用 xpath 我找不到它
  • 浏览器 chrome 和 xp

标签: java spring selenium


【解决方案1】:

您的示例显示它是一个按钮,但您的 XPath 正在寻找 图像

//img[@ng-click='addAnswer(question)']

上面是你使用的,img作为元素类型。

将其更改为button

【讨论】:

  • 好的,我正在使用这个 getDriver().findElement(By.xpath("//button[@ng-click='addAnswer(question)']")).click();但它也不起作用
  • 使用 Chrome v26 我可以找到它。您可以测试一下 Chrome 是否存在 XPath 问题。在您的页面上打开它的开发人员工具,转到控制台选项卡,在控制台中输入 $x("//button[@ng-click='addAnswer(question)']") 并按 Enter。看看你得到了什么。 XPath 在这里工作得很好。
  • 还是不行:(
  • 你还没有回答问题,按照我上面说的去做。 Chrome 能找到吗?你的网页有 IFrame 吗?
  • 如果元素在 IFrame 中,则需要切换到它,否则 WebDriver 将找不到它。 getDriver().switchTo().frame();
【解决方案2】:

Xpath 有时在 chrome 浏览器中无法正常工作。使用firefox驱动找到它,如果你不确定你的xpath是否正确,使用Firepath。或者在 Chrome Xpath Helper 中。

【讨论】:

    【解决方案3】:

    您的 xpath 指的是图像,而不是按钮。

    getDriver().findElement(By.xpath("//img [@ng-click='addAnswer(question)']")).click();
    

    改成

    getDriver().findElement(By.xpath("//button[@ng-click='addAnswer(question)']")).click();
    

    【讨论】:

      猜你喜欢
      • 2016-03-15
      • 2020-02-01
      • 2022-11-18
      • 2016-04-29
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多