哪个定位器在量角器中有效 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。
就性能而言,使用哪个更好: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。