2017-12-26 14 views
0

ボタンをクリックして詳細を挿入するためにPayPalの画面を開いたサイトで自動化を実行します。 PayPalは別のタブで開きます。テストを関連するタブに移動する構文を追加し、「電子メール入力」フィールドが存在することを確認する構文を挿入します(実際に正しいタブに移動していることを確認する)。フィールドが存在する。 次に、電子メールを挿入するための同じフィールドの構文を追加します。テストは失敗します。テキストは挿入されず、フィールドが表示されないというメッセージが表示されます。 ファイルが画面の上部にあるため、スクロールする必要はありません。 この場合、私は何ができますか?Cant insert text - 要素が表示されないというメッセージが表示されます

String oldTab = driver.getWindowHandle(); 

    comOps.clickOrChose(PLS.buyButton); 
    Thread.sleep(4000); 

    ArrayList<String> newTab = new ArrayList<String> (driver.getWindowHandles()); 

    newTab.remove(oldTab); 
    driver.switchTo().window(newTab.get(0)); 

    comOps.verifyElementExist(PLP.payPalEmail); 

    comOps.insertText(PLP.payPalEmail, "[email protected]"); 
+0

のようにそれを呼び出すあなたがとしてクラスを持っているように思えます共通アクションのいくつかを実行する 'comOps'。要素が表示されないか、隠されている可能性があります。その場合、最初に確認する必要があります。例外はありますか? – Amol

+0

はい。これは私がテキストを挿入しようとしたときに受け取ったものです。要素は表示されません。私に何ができる? – libi

+0

スクロール後に要素が表示されているかどうか確認できますか? – Amol

答えて

0

このエラーメッセージを取得する理由は、要素が明らかに存在していることですが、あなたがそれにテキストを入力しようとすると、表示されません。

これは、関連するコードです。要素が表示されない理由はたくさんあります。

新しいタブが開いている場合、考えられる理由はページ(およびその要素)がまだ読み込まれているためです。このような場合は、要素の可視性を待つ必要があります(例: (テキストを挿入する前に)コードのこの部分を使用して:

WebDriverWait wait = new WebDriverWait(driver, 300); //waiting up to 5 minutes  
ExpectedCondition<WebElement> condition = 
    ExpectedConditions.visibilityOf(PLP.payPalEmail); 
wait.until(condition); 

注:このソリューションはPLP.payPalEmailタイプorg.openqa.selenium.WebElementであることを前提としています。タイプがorg.openqa.selenium.Byの場合はvisibilityOfElementLocated(By locator)を使用してください。

コードスニペットから、comOpsはすべてのSeleniumアクションをラップするクラスのオブジェクトであると仮定します。だから、このようになり、そのクラス内のいくつかの方法では、上記のコードを配置することをお勧めです:

public void verifyElementVisible(WebElement element) { 
    WebDriverWait wait = new WebDriverWait(driver, 300); //ToDo: use configurable timeout  
    ExpectedCondition<WebElement> condition = 
    ExpectedConditions.visibilityOf(element); 
    wait.until(condition); 
} 

この

comOps.verifyElementVisible(PLP.payPalEmail);

関連する問題