在性能方面哪一个更好用: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. 但目前尚不清楚哪一个更好。
答案 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,如果没有其他适合你的情况。