これは初歩的な質問かもしれませんが、対話しているポップアップのタイプを特定する方法がわからないので、Selenium webdriver を使用して自動化するのに十分な情報を得ることができます。
私はそれが単なるポップアップだと思っていましたが、ポップアップを処理する標準的な方法 (と思われるもの) を使用すると、Selenium JUnit テストでボタンがクリックされたインスタンスがフリーズします。
String mainWindowHandle = driver.getWindowHandle();
//P2: Click on the element that opens the popup
driver.findElement(By.xpath("//a[contains(text(),'Login')]")).click();
Set s=driver.getWindowHandles();
Iterator ite=s.iterator();
while(ite.hasNext()){
System.out.println("Current ite = " + ite.next().toString());
String popupHandle=ite.next().toString();
if(!popupHandle.contains(mainWindowHandle)){
driver.switchTo().window(popupHandle);
System.out.println("reached popup window? Now perform the login procedure before returning to the original window");
driver.switchTo().window(mainWindowHandle);
}
}
このコードはここで説明されており、受け入れられた回答でした。このコードの他の多くの同様の例も見てきましたが、私のアプリケーションでは、セレン テストがオンラインでハングします。
driver.findElement(By.xpath("//a[contains(text(),'Login')]")).click();
ログイン情報を入力するのを待つだけで、手動で入力するまでテストがハングします。情報を入力すると、テストが続行されます。このコードでポップアップ ウィンドウのハンドルを見つけて (そして最終的に) ユーザー名とパスを入力し、[OK] をクリックするようにしたいと考えています。従来のポップアップを扱っていない可能性はありますか? どうすればわかりますか?
このログイン ボタンは、html の次の要素です。<a href="/trac/login">Login</a>