3

.get() を使用してアクセスしている URL がわからないため、driver.get() を待機させる方法。不明な時間がかかる場合があるため、diver.get() に 30 秒のタイムアウトを与える必要があります。

以下はそのコードです..

package org.openqa.selenium.example;

import java.util.List;

import org.openqa.selenium.By

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;


public class MyClass{

    public static void main(String[] args) throws Exception {

        // The Firefox driver supports javascript 

        WebDriver driver = new HtmlUnitDriver();

        // Go to the some websites

        driver.get("http://www.abced.com/123456/asd.htm");

        /***  Here we DONT get back the driver, so we need to Give Time out of 30 seconds**/

        final List<WebElement> element1= driver.findElements(By.tagName("a"));

    for (WebElement webElement : element1) {

        String urlFromPage = webElement.getAttribute("href");

                System.out.println(urlFromPage);

        }


     }

}

私は試した

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(thisPage.url);

それは動作していません..plzは提案します、tx

4

2 に答える 2

5

ページが読み込まれるのを待ちたい場合は、代わりにpageLoadTimeout(long time, java.util.concurrent.TimeUnit unit)メソッドを使用する必要があります。はimplicitlyWait(long time, java.util.concurrent.TimeUnit unit)、ページが読み込まれるのを待つのではなく、まだ表示されていない要素を待つために使用されます。

WebDriver インスタンスでは、 で使用したものと同様のメソッド チェーンを呼び出す必要がありますimplicitlyWait()。これは、次の順序で呼び出されます。

  • manage()- ドライバー管理インターフェース
  • options()- ドライバー オプション インターフェイス
  • timeouts()- タイムアウト オプション インターフェイス
  • pageLoadTimeout(...)- タイムアウトを希望の時間に設定する

関連する javadocはこちらにあります

于 2012-05-02T06:55:51.070 に答える
0

代わりに、WebDriverWait を使用して、チェックする条件と最大タイムアウトを指定できます。これは次のように使用できます。

WebDriverWait _wait = new WebDriverWait(driver, new TimeSpan(0, 0, 2)); //waits 2 secs max
_wait.Until(d => d.FindElement(By.Id("name")));

この質問に同様の回答を投稿しました。

于 2012-05-03T00:04:00.147 に答える