有没有比Selenium中的findElement方法更快的方法来获取元素?

时间:2015-07-13 17:24:04

标签: java performance selenium xpath

我目前正在使用Java中的Selenium编写一些自动化测试来测试搜索引擎及其在网页中的结果,但我注意到findElement调用往往运行速度很慢。当我遍历显示的结果以确保它们正确显示时(以及其他一些测试),我经常使用这个调用。

我想知道是否有更快的方法可以使用,或者是否有其他建议可以加快这个过程。

示例电话:

   driver.findElement(By.xpath("//section[@id='results']/ul/li[1]/a/h1")).click(); // choose first result
   driver.findElement(By.className("total"));

我想知道By.xpath函数是否比其他函数(例如By.className函数)慢。我对自动化测试比较陌生,但我觉得我正在运行的测试不应该像它们那样慢。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

我最终使用findElements()函数并迭代生成的列表。我需要执行的许多重复性任务是检查HTML中列表中保存的搜索结果的格式。 findElements()很有用,因为它只需要自己去一个网页(初始调用),然后我在其上执行的所有迭代和操作都可以在内存中执行。

根据https://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html的Selenium文档,findElements()对于检查缺少元素也很有用。在对我的测试进行更改之后,我看到平均加速率约为30%(尽管对于一些较小的测试,这些变化几乎可以忽略不计......)