2017-08-24 9 views
-2

モーダルポップアップを確認する必要があります。私は記入して次のページに移動しなければならない書式を持っています。 [続行]をクリックすると、入力された詳細が正しいかどうかを確認するモーダルポップアップが表示されます。セレンを使用してモーダルポップアップの要素を見つけることができません

ボタンとその他の説明が2つあります。ワンボタンでキャンセル読み込み、他のは、私が何webelementが見つからなかったとしてそれがNullPointerExceptionになり後に、私はwebDriverで行うものは何でも、しかし

driver.switchTo().frame(0); // there is only one popup 

によりモーダル要素への切り替えを試みたYes, information is correct.言います。

これは

WebElement modalButtonContainer = AutoUtils.findElementByClassName(modalOverlay, "modalButtonContainer"); 
WebElement modalButton = AutoUtils.findElementByClassName(modalButtonContainer, "buttonClass"); 
modalButton.click(); 

しかし、それはすべてのNullPointerで結果をしようとしていますものです。 modalButtonをクリックするにはどうすればよいですか?

+0

サイトのURLを共有します。 –

答えて

0

正確に言えば、driver.switchTo().frame(0);は要素に切り替わります。ここではpopupについて話しています。これは、その後

Alert alert = driver.switchTo().alert(); 
alert.accept(); 

javascript:alert('popup')または類似して呼び出された典型的なJavaScriptポップアップで移動するための方法である場合には、この1は再び、依存しています。そうでない場合、ブートストラップポップアップであれば、何も切り替える必要はありません。たぶんFluentWaitのみです。

(それが動作しない場合は、DOMを共有してください)

+0

アラートではありません。試してみましたが、「警告なし」の例外が表示されます。 –

+0

あなたは全く切り替えをしませんでしたか?一時的に(!) 'ModalButton.click();の前にテスト用のThread.sleep(2000)を追加してください。 – Pijotrek

+0

うん。 Switchinは役に立たないようです。 –

0

ポップアップ上に2つのボタンがあるので、両方のボタンのクラス名は(「buttonClass」)と同じである場合に

ベター他のロケータで名前やその他の一意の属性でボタンを識別してみてください。

WebElement modalButtonContainer = AutoUtils.findElementByClassName(modalOverlay, "modalButtonContainer"); 
WebElement modalButton = AutoUtils.findElementByName(modalButtonContainer, "Cancel"); 
         (or) 
WebElement modalButton = AutoUtils.findElementByName(modalButtonContainer, "Yes, information is correct."); 
modalButton.click(); 
0

NullPointerExceptionは、element not foundを意味しない。これは、まだ初期化されていないオブジェクトにアクセスしようとしていることを意味します。スタックトレースを確認してください。それは、あなたが初期化されていないオブジェクトにアクセスしようとした正確な行を表示します。これは、あなたがインタラクトしているページオブジェクトかウェブ要素のどちらかです。問題が検出されたら、new演算子が使用されていることを確認します。 PageFactoryを使用している場合は、initElementsに電話することを忘れないでください。

関連する問題