获取已找到的 WebElement 的“按”定位器
2022-09-01 16:15:05
有没有一种优雅的方法来获取我已经发现/识别的硒WebElement的By定位器?
为了明确这个问题:我希望使用用于查找元素的“按定位器”。在这种情况下,我对特定属性或特定定位器(如css定位器)不感兴趣。
我知道我可以解析WebElement的toString()方法的结果:
WebElement element = driver.findElement(By.id("myPreciousElement"));
System.out.println(element.toString());
例如,输出为:
[[FirefoxDriver: firefox on WINDOWS (....)] -> id: myPreciousElement]
如果你通过 xpath 找到了你的元素:
WebElement element = driver.findElement(By.xpath("//div[@someId = 'someValue']"));
System.out.println(element.toString());
然后,您的输出将是:
[[FirefoxDriver: firefox on WINDOWS (....)] -> xpath: //div[@someId = 'someValue']]
因此,我目前编写了自己的方法来解析此输出,并给我“重新创建”By定位器。
但是,在Selenium中已经实现了一种更优雅的方法来获取用于查找元素的By定位器吗?
到目前为止,我找不到一个。如果您确定没有开箱即用的,您能想到API创建者可能不提供此功能的任何原因吗?
*尽管这与问题无关,但如果有人想知道为什么您需要此功能,只需2个例子:
- 如果您使用 PageFactory,则很可能不会将定位器作为 Page 类中的成员变量,但稍后在处理页面元素时可能需要它们。
- 您正在与仅使用页面对象模式而不使用PageFactory的人的API一起工作,因此希望您移交定位器而不是元素本身。