2016-04-20 9 views
0

Webdriver/Javaを使用してサイトページをテストしていますが、これには多くのフィールドが含まれています。フィールドの1つはドロップダウンボックス(または選択ボックス)であり、フォーカスを失うと検証が行われます(タブアウトなど)。したがって、ドロップダウンで特定のオプションを選択して次のフィールドに移動すると、「あなたは選択できません!」というアラートボックスが表示されます。Selenium警告はデバッグモードでのみ表示されます

今、私は警告ボックスの存在をチェックし、それを受け入れるコードを実行していますが、これはDEBUGモードでのみ動作します。テストを実行すると(つまり、デバッグではない)、「アラートが存在するのを待ってから10秒後にタイムアウトします。ビルド情報:バージョン: '2.53.0'」。

これはおそらくタイミング問題ですが、DEBUGモードで動作するためですが、なぜExpectedConditions.alertIsPresent()を使用しているのかわかりません。これが失敗しているコードはここにあります:

WebElement currentElement = driver.findElement(By.id("selectbox")); 
Select currentSelect = new Select(currentElement); 
currentSelect.selectByVisibleText(updatedValue);  
currentElement.sendKeys(Keys.TAB); 

System.out.println("milestoneA"); 
if ((exceptionExpected()) { 
    System.out.println("milestoneB");  
    wait.until(ExpectedConditions.alertIsPresent());        
    System.out.println("milestoneC"); 
    checkAlertBox(getExpectedResultFromExcel());        
} 

コードはうまくいっていて、すべて正常です。私のログのRUNモードでは、私はマイルストーンBに達し、上記のエラーがスローされます。

さらに、タブ移動前にThread.sleep(1000)を追加すると、すべて正常に動作します。

どのようなアイデアをお願いしますか?

+0

は、タイムアウトが発生したときに選択ボックスが集中しますか? –

+0

実際には、フォーカスは次の要素に移動します。だから私がしたことは、sendKeys(Keys.TAB)の直前にthread.sleep(3000)を実行したことです!だから私は今何をすべきか分からない。 ExpectedConditionsで理にかなったオプションは実際には見られません。どんな考えですか? – Dragonfly

答えて

1

私は要素がフォーカスを失うまでTABキーを送信しようとする:

WebElement currentElement = driver.findElement(By.id("selectbox")); 
currentElement.click(); 
currentElement.sendKeys("abcd"); 

// wait for the popup to be visible 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#abc"))); 

// send the TAB key while the current element has focus 
new WebDriverWait(driver, 20).until((WebDriver wd) -> { 
    currentElement.sendKeys(Keys.TAB); 
    return !wd.switchTo().activeElement().equals(currentElement); 
}); 
+0

フォーカスは失われています。ページの次の要素が強調表示されていることがわかります。これについてはわかりません。より多くの研究をすると、私のドロップダウンボックスには動的にデータが入力されている可能性があることがわかったので、まずタブビングする前にオプションを待つ必要があります。次の要素が選択される時点で、その要素が使用可能であることをドロップダウンで確認できるため、これはまだわかりません。 – Dragonfly

+0

私はちょうどあなたのコードを試してみましたが、それでも同じ問題です。 DEBUGモードでのみ動作します。いい実装だけど:) – Dragonfly

+0

それが役立つかどうかわからないが、これはドロップダウンのHTMLだ。 * "select id =" abc "class =" controlclass "style =" position:絶対; top:65px; left:150px; width:80px; visibility:visible; " onblur = "ServerFunction( 'LoseFocusFunc()')" 名前= "MyDropDown"> \t \t \t \t \t \t <オプション値= "001"> ABC \t \t \t \t \t \t <オプション値= "002">デフ \t \t \t \t \t \t <オプション値= "003"> GHI \t \t \t \t \t \t <オプション値=「」> \t \t \t \t \t – Dragonfly

関連する問題