0

私はセレンの初心者です。

多くのサブ要素を含む Web ページのドロップダウン ボックス内のすべての要素をトラバースしようとしています。select タグのすべてのオプションのすべての href 属性を取得するためにこれを行っています。Xpath 式を使用して要素を検索しています。

FireFox ブラウザと一緒に Selenium WebDriver を使用しています。結果は期待どおりですが、テストは非常に遅いです。

別のアプローチを使用してテストを高速化できる方法があれば教えてください。

これは私が使用しているコードです-

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 などの GUI ツールによる自動化は遅く、ブラウザを開始するプロキシは遅いプロセスであり、すべての GUI 要素の完全な表示も遅いプロセスです。速度が重要な要素である場合は、ヘッドレス ツールを使用して同様に包括的なテストを実行できることを忘れないでください。実行時間は最大 40% 短縮できます。私が使用したツールはJWebUnitです。速度のためにそれを試してください。

于 2012-04-06T04:29:32.893 に答える
0

参照: Selenium 2.0 IE Xpath パフォーマンス

あなたのシナリオを考えると、ページ ソースを HtmlAgilityPack などのライブラリにロードし、そのように解析する方がよいと思います。パフォーマンスが大幅に向上します。C# 以外の言語については、こちらを参照してください

于 2012-04-06T01:49:27.713 に答える
0

ネイティブの xpath エンジンを持つ Firefox でテストを実行しています。そのため、コードを提供しない限り、テストが遅い理由を判断するのは困難です。IE にはネイティブの xpath エンジンがないため、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 に答える