我是硒的新手。
我正在尝试遍历包含大量子元素的网页上的下拉框中的所有元素。我这样做是为了获取select标签中所有选项的所有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--;
}
}
}
答案 0 :(得分:0)
请参阅:Selenium 2.0 IE Xpath Performance
根据您的情况,我认为您最好将页面源加载到像HtmlAgilityPack这样的库中并以这种方式解析它 - 您将看到巨大的性能提升。对于C#以外的语言,请查看here。
答案 1 :(得分:0)
您正在firefox中运行具有本机xpath引擎的测试。因此,除非您提供代码,否则很难说出为什么您的测试很慢。 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"));
}
答案 2 :(得分:0)
使用任何GUI工具(如selenium)的自动化速度很慢,启动浏览器的代理是一个缓慢的过程,所有GUI元素的完整显示也是一个缓慢的过程。如果速度是一个因素,请不要忘记您可以使用无头工具进行同样全面的测试。执行时间可减少多达40%。曾经使用过的工具是JWebUnit。试试速度。