3

サイトのテストを自動化(Java + Selenium)しようとしていますが、待機に多くの問題があり、やりたいことができません。

いくつかの単体テストの準備ができたら、私の問題は次
のとおりです。コントロールを返す前にページが読み込まれるという印象を受けましたが、ここではそうではないようです。実行する代わりにブレークポイントを設定し、デバッグして段階的に実行すると、すべてが完全に機能するため、タイミングの問題であると思われます。

私がこれを書くと、それもうまくいきます:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  

しかし、要素が表示される (ユーザー名やパスワード フィールドなど) か、ボタンがクリック可能になる (ログイン ボタンなど) まで待機する場合、カーソルは URL バーに留まり、ページの読み込み以外には何もしません。 .

        WebDriverWait wait = new WebDriverWait(driver, 20);
        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//*[@id='isc_E']"))));

(はい、xpath の代わりに ID を使用できることはわかっています。これは、多くの試みの 1 つの残り物です)。

このコードの後で、2 つのテキスト フィールドに対していくつかの sendKeys() を実行し、ログイン ボタンに対して click() を実行して停止します。実際に待機コマンドを実行するには、他に何か追加する必要がありますか?それともそれで十分ですか?

私はおそらくどこかでかなりばかげた方法でそれを台無しにしていることを知っていますが、私は自分でそれを見つけたり理解したりすることはできません.

ありがとう。

4

1 に答える 1

0

送信ボタンをクリックする方法がわかりません。しかし、それは下に行くべきです

// WebDriver instance for explicit wait by default on until condition
WebDriverWait wait = new WebDriverWait(driver, 5000);
// waits until elements gets ready 
WebElement we = wait
              .until(ExpectedConditions.elementToBeClickable(By
                            .xpath("//*[@id=\"searchSubmit\"]")));

//  once elements is ready it will clicked
driver.findElement((By) we).click();

driver.findElement(By.xpath("//*[@id=\"searchSubmit\"]")).click();

明示的および暗黙的な待機

これがお役に立てば幸いです。

于 2013-01-28T22:24:15.793 に答える