获取已找到的WebElement的按定位器
要明确这个问题:我希望使用“按定位器”来查找元素。在这种情况下,我对特定属性或特定位置(如css-locator) 感兴趣。
我知道我可以解析WebElement的toString()方法的结果:
WebElement element = driver.findElement(By.id("myPreciousElement"));System.out.println(element.toString());
输出例如:
[[FirefoxDriver:WINDOWS(....)上的Firefox]-> id:myPreciousElement]
如果您通过xpath找到了元素:
WebElement element = driver.findElement(By.xpath("//div[@someId = 'someValue']"));System.out.println(element.toString());
然后您的输出将是:
[[FirefoxDriver:WINDOWS(....)上的Firefox]-> xpath:// div [@someId
=’someValue’]]
因此,我目前编写了自己的方法来解析此输出并为我提供“重新创建的”按定位符。
,Selenium中是否已经实现了一种更优雅的方式来获取用于查找元素的“按”定位器?
到目前为止我找不到。
如果您确定没有开箱即用的功能,您能想到API创建者可能不提供此功能的任何原因吗?
*尽管这与问题无关,但如果有人想知道为什么您将需要此功能,则仅举两个示例:
- 如果您使用PageFactory,则很有可能不会将定位符作为Page类中的成员变量,但是稍后在处理页面元素时可能需要它们。
- 您正在使用仅使用Page Object Pattern而没有PageFactory的人员的API,因此希望您移交定位符而不是元素本身。*
回答:
答案是 。By
默认情况下,您不能从先前找到的WebElement中提取。
话虽这么说-可以实现自定义解决方案,但Selenium并不提供这种现成的方法。
考虑以下有关“为什么”的问题。
By by = By.id("someId");WebElement e = driver.findElement(by);
您已经有了By
对象,因此您无需调用类似e.getBy()
以上是 获取已找到的WebElement的按定位器 的全部内容, 来源链接: utcz.com/qa/416915.html