使用webdriver找到元素的最佳和最快的方法是什么? By.XPath或By.ID或其他什么?为什么?
我在许多地方都读过XPath是正确的候选人,但却找不到准确的理由。
答案 0 :(得分:31)
按ID查找元素通常是最快的选项,因为从根本上来说,它最终会调用document.getElementById()
,这是由许多浏览器优化的。
通过XPath查找元素对于使用非常复杂的选择器查找元素非常有用,并且是最灵活的选择策略,但它有可能非常慢,特别是在IE中。在IE 6,7或8中,通过XPath查找比在Firefox中执行相同操作要慢一个数量级。 IE不提供本机XPath-over-HTML解决方案,因此项目必须使用JavaScript XPath实现,而旧版IE中的JavaScript引擎实际上要慢得多。
如果您需要使用复杂选择器查找元素,我通常建议使用CSS选择器(如果可能)。它不像XPath那么灵活,但是会覆盖许多相同的情况,而不会在XP上表现出对XP的极端性能损失。
答案 1 :(得分:0)
显然By.id()
与By.xpath()
相比更快,因为By.id()
可以快速访问。但是,在By.xpath()
中,遍历需要时间。
结论:与By.id()
By.xpath()
速度更快
答案 2 :(得分:0)
通过使用By.id(),更快的方法是显而易见的,但是你也可以使用By.name()替代它,它也具有与By.id()类似的速度。并且cssSelector也使用id,name,因此它与搜索By.id()和By.name()相同。使用xpath的主要原因是,每个web元素都有分配给它的唯一路径,因此当两个元素共享相同的id,name和classname时,xpath就是一个唯一的解决方案。