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

Which one of the locator is efficient by.css or by.xpath or by.id in 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。 但是不是很清楚哪个更好

Protractor 在下面为元素 lookup/interaction 等使用 selenium-webdriver,所以这不是量角器特定的问题,而是 selenium-webdriver 特定的问题。

CSS 选择器的性能比 Xpath 好得多,并且在 Selenium 社区中有详细记录。这里有一些原因,

Xpath 引擎在每个浏览器中都不同,因此导致它们不一致。 上次我检查时,IE 没有原生的 xpath 引擎,因此 selenium-webdriver 注入了自己的 xpath 引擎以兼容其 API。因此,我们失去了使用 selenium-webdriver 固有提升的本机浏览器功能的优势。 Xpath 往往像您的示例一样变得复杂,因此在我看来很难read/maintain。

但有些情况下,你需要使用xpath,例如,搜索父元素或通过文本搜索元素(我不推荐后者)。

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

所以我建议您使用 id、name 等来加快查找速度。如果那不可用,请使用 css,如果 none 其他适合您的情况,则最后使用 xpath。