在Protractor中哪个定位器有效率by.css或by.xpath或by.id?

时间:2015-06-26 14:15:56

标签: protractor

在性能方面哪一个更好用:by.css或by.xpath或by.id. 我有一个非常冗长的xpath:

by.xpath('//*@id="logindiv"]/div[3]/div/div[1]/div/nav/div/div[1]/form/div/div/button')

可以与其他选择器一起使用,例如by.css或by.id. 但目前尚不清楚哪一个更好。

1 个答案:

答案 0 :(得分:5)

量角器使用下面的selenium-webdriver进行元素查找/交互等,所以这不是特定于量角器的问题,而是特定的selenium-webdriver。

CSS选择器的性能远远优于Xpath,并且在Selenium社区中有很好的文档记录。以下是一些原因,

每个浏览器中的Xpath引擎都不同,因此它们不一致。 上次我检查时,IE没有本机xpath引擎,因此selenium-webdriver注入了自己的xpath引擎以兼容其API。因此,我们失去了使用selenium-webdriver本身促进的本机浏览器功能的优势。 Xpath往往像你的例子一样变得复杂,因此在我看来难以阅读/维护。

但是在某些情况下,您需要使用xpath,例如,搜索父元素或按文本搜索元素(我不建议使用后者)。

您可以阅读Simon(selenium-webdriver的创建者)here的博客。他还建议使用CSS而不是Xpath。

所以我建议你使用id,name等来加快查找速度。如果不可用那么使用css并最终使用xpath,如果没有其他适合你的情况。