【问题标题】:How to improve Performance with isTextPresent() equivalent function in selenium webdriver?如何使用 selenium webdriver 中的 isTextPresent() 等效函数提高性能?
【发布时间】:2012-09-21 12:45:43
【问题描述】:

我已经实现了数据驱动框架,因此我的 isTextPresent 函数可能具有动态值。另外,我的应用程序中需要有很多断言文本。我尝试使用 xpath 之类的

boolean b=driver.findElement(By.xpath("//*[contains(.,stringc3)]")).getText().contains(stringc3);

其中 stringc3 是要检查的文本。但是这个实现需要很长时间(使用 webdriverbackedselenium,我的测试过去需要大约 3 分钟,但使用 webdriver 及以上代码,大约需要 20 分钟)。那么有没有办法让这个测试运行得更快呢?

我了解到这些函数现在支持从 selenium ide 导出 (http://code.google.com/p/selenium/source/detail?r=17718)

那么,有没有计划在 webdriver 中实现 isTextPresent 功能?

【问题讨论】:

  • 第一个问题是您没有直接使用 XPath 查询。不管你怎么做,你在你的查询中使用*,所以XPath引擎会搜索整个页面中的每一个元素。其次,我不确定您为什么要检查两次文本?您在 XPath 中检查一次,然后在代码中再次检查。为什么?第三,您是否实施了任何超时? Selenium 将等待这些超时的整个长度。四、你试过用其他驱动吗?对特定驱动程序是否很慢?
  • 感谢您的回复。对于您的问题,由于我的框架是数据驱动的框架,因此我无法在没有“*”的情况下定义 xpath,因为文本可能出现在任何位置(表内/表外)。其次,我的代码只有在我检查文本两次时才会发现问题。否则,它会通过它们而不会大喊错误。第三,我给了 30 秒的超时时间,它工作正常。我不认为,这是超时的问题。对于第四个问题,我没有尝试使用其他驱动程序。
  • “其次,我的代码只有在我检查文本两次时才会发现问题。否则,它会通过它们而不会大喊错误。” ...这里有一些很不对劲的地方...

标签: java selenium selenium-webdriver


【解决方案1】:

我相信isTextPresent 只是来自body 标签的内部文本。所以你可以先从页面中抓取所有文本,然后找到你需要的字符串。

string alltext = driver.findElement(By.tagName("body")).getText();

【讨论】:

  • 我的网页很大,正文也会很大。另外,我已经实现了另一种方式。我的代码会读取一个 excel 文件,并且当存在文本断言时,我会在网页中检查该文本。
  • @SuchitraR.D 实际上我没有看到非常大的正文文本有什么大问题。如果您在一个测试用例中有多个文本断言,则查找 body 标记一次并遍历其文本会更快,而不是每次都查找 xpath 定位器。
猜你喜欢
  • 2011-12-04
  • 2012-08-26
  • 2017-05-15
  • 2013-12-31
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
相关资源
最近更新 更多