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

ash*_*man 0 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')
Run Code Online (Sandbox Code Playgroud)

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

nil*_*esh 5

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

CSS选择器的性能远远优于Xpath,它在Selenium社区中得到了很好的记录.这是一些原因,

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

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

你可以阅读从西门(硒的webdriver的创建者)博客在这里.他还建议使用CSS而不是Xpath.

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