2017-06-29 1 views
0

2つの選択ドロップダウンがあります。最初のドロップダウンのオプションを選択すると、自動的に2番目のドロップダウンが更新されます。 2番目のドロップダウンの値が最初のドロップと同じであるかどうかを確認する必要があります。Selenium:DropDownが更新されるのを待ってからDropDownの値を取得する

私の問題は、2番目のドロップダウンにあらかじめロードされている値があることです。私がアクセスすると、戻り値はすべてそれらのプリロードされたものです。ドロップダウンの値が更新されるまで待つ必要があります。次に、チェックの値を取得します。

しばらくしてから値が更新されるのを待ってみましたが、エラーが発生します。これは私の待っているコードです:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

開始から要素が存在するため、これも使用できません。

WebDriverWait wait = new WebDriverWait(driver, 10); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".z-phenotype-dropdown.z-select"))); 

2番目のドロップダウンのためのHTMLコードは次のようになります:

<td> 
<tbody> 
<tr> 
<select class="z-phenotype-dropdown z-select"> 
    <option class="z-option"> </option> 
    <option class="z-option"> sample 1 </option> 
    <option class="z-option"> sample 2 </option> 
    <option class="z-option"> sample 3 </option> 
</select> 
</tr> 
</tbody> 
</td> 
+0

同じHTMLコードを教えていただけますか? – Murthi

答えて

1

私は、ドロップダウン要素のデフォルト数を想定IS 4およびオプションの数を待っていることとして、4よりも大きく、下記のとおり。それはあなたのために働くかもしれません。

WebDriverWait wait = new WebDriverWait(driver, 10); 
wait.until(ExpectedConditions.numberOfElementsToBeMoreThan(By.cssSelector(".z-phenotype-dropdown.z-select>option"),4)); 
+0

素晴らしい!これはうまくいった。どうもありがとうございました。 – Keeper

+0

@Murthi Great Answer !!! – DebanjanB

+0

実際に少し修正しましたが、このアイデアには大変感謝しています!これは私が使ったものです:WebDriverWait wait = new WebDriverWait(driver、10); \t \t wait.until(ExpectedConditions.numberOfElementsToBeLessThan(By.cssSelector( ".z-phenotype-dropdown.z-select> option")、3)); – Keeper

関連する問題