@FindBy(id ='blabla')与// * [@@ id ='blabla]是一样的东西吗

时间:2019-10-28 17:05:02

标签: selenium xpath katalon-studio

我决定尝试Katalon并得到这个问题,因为Katalon Studio在用户选择“通过属性'id'定位”时显示//*[@id='blabla']将用于定位元素。但对我而言,它看起来像xPath的变体。所以我想知道,当在JAVA中-Selenium时我写@findBy (id='blabla')-硒将其转换为//*[@id = 'blabla']

找不到答案

Google,论坛,katalon文档

更新: 我想知道这两种方法是否完全相同。 1.查找元素会花费相同的时间吗? 2.两种方法都将从DOM的顶部开始寻找元素吗?

2 个答案:

答案 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

单个元素查找仅重用集合的查找。