我决定尝试Katalon并得到这个问题,因为Katalon Studio在用户选择“通过属性'id'定位”时显示//*[@id='blabla']
将用于定位元素。但对我而言,它看起来像xPath的变体。所以我想知道,当在JAVA中-Selenium时我写@findBy (id='blabla')
-硒将其转换为//*[@id = 'blabla']
?
找不到答案
Google,论坛,katalon文档
更新: 我想知道这两种方法是否完全相同。 1.查找元素会花费相同的时间吗? 2.两种方法都将从DOM的顶部开始寻找元素吗?
答案 0 :(得分:3)
在功能上,这些功能都做同样的事情:
@FindBy(id = "foo")
批注driver.findElement(By.id("foo"))
driver.findElement(By.xpath("//*[@id = 'foo']"))
driver.findElement(By.css("#foo"))
他们都通过其ID找到一个元素。
我不确定在对Selenium Server的API调用中该转换为什么,但是Selenium is open source。看看你自己。
@FindBy(...)
注释在FindBy.java中定义,该注释继承自AbstractFindByBuilder。遍历代码,您会发现答案。
答案 1 :(得分:1)
这是等效的。 (但这可能取决于特定的硒键)
如果要查看Selenium Java库的PropertyChangeSupport
类,您会看到如下代码:
By
单个元素查找仅重用集合的查找。