2017-08-07 3 views
0

私はSeleniumでいくつかのテストを実施しました。私はできるだけ強いテストをしたい。 ElementToBeClickableを使用するか、elementExisitsまたはその両方を使用する必要があるかどうかを知りたい。最も正確な結果を得るための明示的な待機のベストプラクティス

例えば私が使用する必要があります

方法1

public static WebDriverWait webDriverWait; 
webDriverWait = new WebDriverWait(excelSession, TimeSpan.FromSeconds(60)); 

webDriverWait.Until(ExpectedConditions.ElementTo‌​BeClickable(wordSession.FindElementByName("Create"))).Click(); 

方法2

By create = By.Name("Create"); 
       webDriverWait.Until(ExpectedConditions.ElementExists(create)).Click(); 

方法3

 By create = By.Name("Create"); 
     webDriverWait.Until(ExpectedConditions.ElementExists(create)).Click(); 
     webDriverWait.Until(ExpectedConditions.ElementTo‌​BeClickable(excelSession.FindElement(create))).Click(); 
+0

要素がレーンをさらに下ってクリックされることになっている場合は、「ElementToBeClickable」のみを使用する必要があります。 'ExpectedConditions'はあなたの別個のアクションだけで設定する必要があります。ありがとうございます – DebanjanB

+0

私はいつもElementIsClickableを私の場合のほとんどのために使用する方が好きです。なんらかの理由でElementIsClickableが機能しない場合(無効なアイテムの場合)、他のいくつかのチェックと組み合わせて、他の兄弟要素の利用可能性をチェックする方がよいでしょう。 –

+3

私はこの質問を意見に基づいて閉じるよう投票しました。私たちはあなたが何をすべきかを知ることができません。私たちはあなたのAPIがドキュメントに基づいて何をすべきかだけ言うことができます*あなたの質問に答えるために読んだこともあります。もちろん、あなたの問題を解決する方法は複数あるかもしれませんが、どちらを選択するかはあなた次第です。 – HimBromBeere

答えて

1

要素は、後の時点でクリックされる場合フォールドを使用できますローディングコード

webDriverWait.Until(ExpectedConditions.ElementTo‌BeClickable(wordSession.FindElementByName("Create"))).Click(); 
webDriverWait.Until(ExpectedConditions.ElementExists(create)).Click(); 

これはほとんどの場合動作しません。要素がDOMで利用可能かどうかをチェックします。要素でUIが表示されているかどうかはチェックされません。

代わりにElementIsVisibleを使用する必要があります。正常に動作しています。

関連する問題