0

我是硒的新手。

我正在尝试遍历具有很多子元素的网页上的下拉框中的所有元素。我这样做是为了获取选择标签中所有选项的所有 href 属性。我正在使用 Xpath 表达式查找元素。

我正在使用 Selenium WebDriver 和 FireFox 浏览器。结果是我所期望的,但测试非常慢。

如果有什么方法可以通过使用任何替代方法来加快测试速度?

这是我正在使用的代码 -

private void captureElements(String xpath)
{ 

  List<WebElement> list=null;

    if((list=driver.findElements(By.xpath(xpath)))!=null){ 

       int length = list.size(); int i=length;

        while(i>0){ 

          WebElement ele = list.get(length-i); 
          Actions builder = new Actions(driver);
          builder.moveToElement(ele).build().perform(); 

          LogElementToExcel(ele); 

          int index = length-i+1; 
          String newxpath = xpath.replace("/a", "["+index+"]/ul/li/a");  
          captureElements(newxpath); 
          i--; 
      } 
   } 
}
4

3 回答 3

0

请参阅:Selenium 2.0 IE Xpath 性能

鉴于您的情况,我认为您最好将页面源加载到 HtmlAgilityPack 之类的库中并以这种方式解析它 - 您会看到巨大的性能提升。对于 C# 以外的语言,请查看此处

于 2012-04-06T01:49:27.713 回答
0

您正在具有本机 xpath 引擎的 Firefox 中运行测试。因此,除非您提供代码,否则很难说出为什么您的测试很慢。Xpath 在 IE 中很慢,因为 IE 没有本机 xpath 引擎,但此时这似乎不是您的问题。

我在想下面会比你的 xpath 解决方案更快。试一试。

WebElement element = driver.findElement(By.id("idOfMySelectBox"));
Select select = new Select(element);
List<WebElement> options = select.getOptions();
for(WebElement option:options){
    System.out.println(option.getAttribute("href"));
}
于 2012-04-06T03:10:54.193 回答
0

使用 selenium 等任何 GUI 工具的自动化都很慢,代理启动浏览器是一个缓慢的过程,所有 GUI 元素的完整显示也是一个缓慢的过程。如果速度是一个因素,不要忘记您可以使用无头工具进行同样全面的测试。执行时间可以减少多达 40%。我曾经使用过的工具是 JWebUnit。试试看速度。

于 2012-04-06T04:29:32.893 回答