2016-05-13 18 views
0

これは既に私がこれに関連した他の質問を読んだので重複していませんが、私が探している答えを私に与えてくれませんでした。要素を取得する前にページ読み込みを待つ方法

私はJavaのUIオートメーションにSeleniumを使用しています。

私のコードは次のようである:それはまだ存在しない要素を探しているので、これはまだ私にエラーを与えるだろう

WebDriver driver; 
public MyClass() 
    { 
     UIEvents auto = new UIEvents(); 
     driver = new FirefoxDriver(); 
     driver.manage().window().maximize(); 
     driver.get("my URL"); 

     LoginPage loginPage = new LoginPage(driver, auto); 
     waitForPageLoad(); 
     loginPage.setEmail("[email protected]"); 
     loginPage.setPassword("1234"); 
     loginPage.clickLogin(); 
    } 



    public void waitForPageLoad() 
    { 
     JavascriptExecutor js = (JavascriptExecutor)driver; 
     final boolean response = js.executeScript("return document.readyState").equals("complete"); 

     if(response == false) 
     { 
      waitForPageLoad(); 
     } 
} 

答えて

0

これはロングショットです。しかし、 "equals"を "equalsIgnoreCase"に変更してみてください。

final boolean response = js.executeScript("return document.readyState").equalsIgnoreCase("complete"); 
+0

私はページが本当への応答の変化でデバッグ中に見ることができますロード終わり。私のアプリケーションを実行すると、私の問題が発生しています。 –

+0

さらに、executeScript()にはequalsIgnoreCaseはありません。 –

+0

申し訳ありません.toString()---> js.executeScript( "return document.readyState")。toString()。equalsIgnoreCase( "complete"); –

0
WebDriver driver_; 

public void waitForPageLoad() { 

    Wait<WebDriver> wait = new WebDriverWait(driver_, 30); 
    wait.until(new Function<WebDriver, Boolean>() { 
     public Boolean apply(WebDriver driver) { 
      System.out.println("Current Window State  : " 
       + String.valueOf(((JavascriptExecutor) driver).executeScript("return document.readyState"))); 
      return String 
       .valueOf(((JavascriptExecutor) driver).executeScript("return document.readyState")) 
       .equals("complete"); 
     } 
    }); 
} 
2

目的の要素がクリッカブル、本表示されるまで、あなたはまた、待つことができ、...

waitFor(ExpectedConditions.presenceOfElementLocated(By.id("yourMailInputId"))); 
+0

上記idの要素が最初に存在しなかった場合はどうなりますか?これは永遠に待ちますか? –

+0

@ShizukaMasudaいいえ、セレニウムのドライバには「タイムアウト」というプロパティがあり、デフォルト値を待つでしょう。私は6-10秒だと思います。しかし、あなたはあなたがページにあるか、そうでなければならないと知っている要素を使うべきです、あなたのページに何か問題が起きたことを知っていなければ – cralfaro

関連する問題