我正在围绕.NET中的IWebDriver为我们的测试人员编写一些辅助方法,并开始想知道当你可以使用CSS选择器来获取元素时,是否有任何方法可以通过ID获取元素ID。
我认为,最终,对CSS“#myelement”的请求将最终优化为document.getElementById(“myelement”)。
是否存在性能差异?当我们可以使用CSS选择器完成同样的事情时,我们是否应该使用By.Id和By.Name?
答案 0 :(得分:2)
By.cssSelector()
比By.id()
快。
使用By.id()
查找元素的方法实际上使用了xpath:
@Override
public List<WebElement> findElements(SearchContext context) {
if (context instanceof FindsById)
return ((FindsById) context).findElementsById(id);
return ((FindsByXPath) context).findElementsByXPath(".//*[@id = '" + id
+ "']");
}
@Override
public WebElement findElement(SearchContext context) {
if (context instanceof FindsById)
return ((FindsById) context).findElementById(id);
return ((FindsByXPath) context).findElementByXPath(".//*[@id = '" + id
+ "']");
}
By.cssSelector
使用CSS引擎的位置。 CSS比更快 ,而且By.cssSelector
的运行速度比By.id
快