我在 .NET 中围绕 IWebDriver 为我们的测试人员编写了一些辅助方法,并开始想知道当您可以使用 CSS 选择器也可以通过 ID 获取元素时,是否有任何意义通过 ID 获取元素身份证。
我认为,最终,对 CSS“#myelement”的请求将被优化为 document.getElementById("myelement")。
有性能差异吗?当我们可以使用 CSS 选择器来完成同样的事情时,我们是否应该费心使用 By.Id 和 By.Name?
最佳答案
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 比 xpath 更快,因此,By.cssSelector
将比 By.id
关于c# - Selenium:By.Id ("myelement") 和 By.Css ("#myelement") 之间是否存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21159505/