哪个是使用webdriver查找元素的最佳和最快的方法? By.XPath或By.ID或其他什么?为什么?

时间:2012-08-02 12:43:58

标签: selenium webdriver

使用webdriver找到元素的最佳和最快的方法是什么? By.XPath或By.ID或其他什么?为什么?

我在许多地方都读过XPath是正确的候选人,但却找不到准确的理由。

3 个答案:

答案 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就是一个唯一的解决方案。