【问题标题】:What's the difference between Selenium XPath and FF XPath?Selenium XPath 和 FF XPath 有什么区别?
【发布时间】:2013-06-17 10:08:41
【问题描述】:

我正在为我们的 Web 应用程序编写一些测试。当我在 Firefox XPath-Checker 插件中使用这个 XPath 时,它工作得很好:

//div[contains(@class, "my-class") and @data-custom-attr="id")]

但是如果像这样在 selenium 代码中使用它:

(new WebDriverWait(driver, MAX_TIMEOUT_FOR_ELEMENT_LOADING_IN_SECONDS)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[contains(@class, \"my-class\") and @data-custom-attr=\"id\")]"));

抛出超时异常。

为什么 xpath 查询直接在浏览器中起作用,而在 selenium 测试中不起作用?是否有关于我必须考虑的文件?

作为旁注:如果我使用确切的路径 /html/body/div/... 等,它确实有效。我上面的示例中的 css 选择器挂件也不起作用。

【问题讨论】:

  • 我们需要查看您正在测试的页面的副本,或者针对面向公众的网站运行此副本。您总是可以将该 XPath 弹出到 Selenium IDE 中并查看它的作用。它在 IFrame 中吗?
  • 也许问题不在于定位元素 - 而是时间。 MAX_TIMEOUT_FOR_ELEMENT_LOADING_IN_SECONDS 的值是多少?元素出现的时间是否足够?
  • 10 秒绰绰有余。当我在本地浏览器上运行它时,我看到了该元素。
  • 在我看来,Selenium 中的 XPath-Parser 被我的属性名称中的“-”所困扰。如果我在 FF 的 Xpath-Plugin 中运行没有任何问题的查询,它可以工作,如果我在 Selenium IDE 或我的 Java Selenium 测试中这样做,它会失败。

标签: xpath selenium


【解决方案1】:

应该可以了,你在代码中给出的最长等待时间是多少。

【讨论】:

  • 10 秒。这已经足够了。
猜你喜欢
  • 1970-01-01
  • 2016-06-07
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多