【发布时间】:2013-10-10 12:23:35
【问题描述】:
我喜欢在我的自动化框架中使用带有 FindBy 注释的 PageFactory 来自动定位我的页面对象类中的元素。
我有一个 WebElement,我需要为其指定几个不同的定位器。我认为 FindBys 是我的解决方案,但显然它不是这样工作的。它相当于 driver.findElement(option1).findelement.(option2)。那不是我需要的。我需要一些可以通过一个或其他定位器找到元素的东西。如果一个不起作用,则使用另一个定位器。有没有办法在 Selenium 中使用 FindBy 注释来做到这一点?
【问题讨论】:
-
你必须做一个自定义的解决方案。扩展您的测试用例并创建您自己的扩展 PageFactory 的自定义 PageFactory
-
此外,几乎任何两个选择器都可以组合成一个选择器。您能解释一下您要查找的内容以及为什么需要两个选择器吗?
-
愚蠢的理由。根据导航到它的方式,系统中有两个版本的主页。同时,我的测试间歇性失败,因为该元素在页面的两个版本中具有不同的 id。并且两个主页版本中都不存在单个静态项。
-
所以没有 FindBy 类型的通知允许指定多个定位器?这将是一个很好的功能,因为并非所有针对不同浏览器的 Webdriver 实现都可以使用相同的定位器找到元素。
-
您可以使用
findby.css("[id=option1],[id=option2]")。逗号允许选择器匹配id。
标签: java selenium selenium-webdriver