2017-03-16 3 views
0

私はヘッドレスブラウザでいくつかのテストを行い、フォームの入力をテストしようとしています。私は、次の例から示されたコードを使用していますPhantomJSとSelenium - 要素を検索するときに待ち時間を使用しようとすると問題が発生する

github link to example of using phantomjs

マイコード:IntelliJので

WebDriverWait wait = new WebDriverWait(driver, 30); 
driver.get("<URL HERE, left out for privacy on stack overflow!>"); 
By amount = By.id("amountField"); 
wait.until(ExpectedConditions.presenceOfElementLocated(amount)); 

エラー:

until(java.util.function<? super org.openqa.selenium.WebDriver, V) in FluentWait cannot be applied to : 

(org.openqa.selenium.support.ui.ExpectedCondition<org.openqa.selenium.WebElement>) 

私はないです私がここで間違っているところは本当に確かです - しかし私は2時間かけて試してみましたこの問題を解決する私は、ページ上を探しています

要素:

<input name="amount0" id="amountField" value="" class="amount form-control" type="number" pattern="\d+(\.\d*)?" maxlength="10" placeholder="Amount"> 
+0

あなたの質問は少し具体的ですか?あなたの目的は何ですか? 2.あなたは何を達成しようとしていますか? 3.明示的な待機が必要な理由は何ですか? 4.それは隠された要素ですか? 5.どのように表示されますか? 6.HTML DOMを提供する。 – DebanjanB

+0

明示的待ちの代わりに上記の「Fluent Wait」とお読みください。 – DebanjanB

+0

フォームの塗りつぶしをテストしようとすると、ファントムがロードされる前に要素を取得しようとするように見えるので、私は流暢な待機が必要です。要素は隠されていません。これはテストボックスとして表示されます。残念ながら私はページの完全なDOMを持っていませんが、主な質問に要素を貼り付けます。 – MickeyThreeSheds

答えて

1

は問題がPhantomJSではないようです。あなたが見ているエラーはそれをすべて伝えます。

あなたのコードは、エラーの原因となっているimport org.openqa.selenium.support.ui.ExpectedConditions;をエクスポートしたので、Fluent WaitとしてWebDriverWait waitを考慮しているようです。

ドキュメントで

だけでなく、著者はimport org.openqa.selenium.support.ui.ExpectedConditions;import org.openqa.selenium.support.ui.WebDriverWait;

をインポートする明示的な待ちを使用していた私は、このアプローチをしようとするあなたをお勧めします:

  1. は、URLが最初にロードましょう。
  2. 明示的な待機を定義します。
  3. ExpectedConditionsを定義します。
  4. 要素のステータスを取得します。
  5. ステータスをSysoutしてください。
  6. 失敗した場合は、ExpectedConditionsを実行するためのExplicit Waitの期間を長くします。

    driver.get("<URL HERE, left out for privacy on stack overflow!>"); 
    WebDriverWait wait = new WebDriverWait(driver, 10); 
    WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("amountField"))); 
         boolean status=element.isDisplayed(); 
    
         if (status) 
         { 
          System.out.println("Element is displayed"); 
         } 
         else 
         { 
          System.out.println("Element is not displayed"); 
         } 
    

    はこれがあなたを助けている場合、私に教えてください:

あなたは、この変更されたコードを見てすることができます。

+0

このソリューションを見る機会を得ましたか? – DebanjanB

+0

@MickeyThreeShedsこの回答があなたの質問に適合している場合は、このディスカッションを閉じる答えを受け入れることができますか? – DebanjanB

+0

申し訳ありませんが、私はあなたに戻って私を奪った - 私の兄が死にかけている、それは時々私の日常の活動から私を引き離すものです。 – MickeyThreeSheds

関連する問題