1

私のSeleniumテストの1つは、ボタンをクリックして新しいユーザーを作成します。

seleniumDriver.findElement(By.xpath("//input[@value='Save']")).click();

ただし、検証は失敗するため(失敗することを意味します!)、<div>一部の入力フィールドを修正するようにユーザーに通知するためにaが表示されます。これは手動で非常にうまく機能しますが、自動テストは次のエラーメッセージで中止されます。

com.thoughtworks.selenium.SeleniumException: Timed out waiting for action to finish
    at org.openqa.selenium.internal.seleniumemulation.Timer.run(Timer.java:44)
    at org.openqa.selenium.WebDriverCommandProcessor.execute(WebDriverCommandProcessor.java:145)
    at org.openqa.selenium.WebDriverCommandProcessor.doCommand(WebDriverCommandProcessor.java:75)
    at com.thoughtworks.selenium.DefaultSelenium.click(DefaultSelenium.java:193)
    at com.holcim.logon.admin.web.admin.UserTest.createUser(UserTest.java:354

click()がタイムアウトになる可能性はありますか?そして、どうすればこれを修正できますか?

4

2 に答える 2

4

同じ問題が発生しましたが、ページの読み込みに十分な遅延がなかったことが原因でした

次のコマンドを使用して、ページをロードするためのタイムアウト遅延を増やすことができます

driver.Manage()。Timeouts()。SetPageLoadTimeout(new TimeSpan(0,0,0,0、timespan));

于 2013-12-11T21:35:50.400 に答える
0

問題の可能な解決策:1)xPathの代わりに、必要な要素のcssセレクターを見つけます。次のようになります。

String cssSelector = "input[value='Save']";

ただし、firepathで検証を使用する前に、必要な要素が適切に配置されているffoxのfirebugアドオン。

ファイアパス検証

必要なcssセレクターを取得したら、常に機能するアプローチを使用できます。必要な要素をクリックするjs関数を使用します。

public void jsClick(String cssSelector){
JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+cssSelector+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());
}

これが今あなたのために働くことを願っています。

于 2012-09-27T10:44:43.910 に答える