1

Selenium webdriver(java)を使用してWebアプリケーションを自動化しています。アプリケーションの他の部分でポップアップウィンドウを処理しましたが、showModalDialogウィンドウを処理できません。アプリケーションは読み取り専用のテキストボックスを持っているので、[検索]ボタンをクリックしてこれを入力する必要があります。これにより、新しいポップアップウィンドウが開きます。

このテキストボックスと検索ボタンのHTMLコードは次のとおりです。

 <tr>
 <td><label class="classLabel">Textbox<sup class="mandatory">*</sup></label></td>
 <td><input type="text" name="textbox" value="" readonly="readonly" class="someTextbox">
 <img src="/Some/url/search.gif" alt="Select Help" onclick="launch2()" />
 </td>
  </tr>

[検索]ボタンをクリックすると、showModalDialogウィンドウが開き、ラジオボタンをクリックしてテキストボックスに入力する必要があります。

このshowModalDialogウィンドウにはiframe要素があり、以下はこのためのhtmlコードです。

  <iframe src="/some/url.do?parameter=getData" width='100%' height='100%' border=0 >  
  </iframe> 

以下は、ポップアップウィンドウに切り替えてiframeを選択するために使用しているコードです。ここでは、検索ボタンをクリックするとテストケースが停止し、ポップアップウィンドウも表示されますが、ポップアップは処理されません。

     driver.findElement(By.cssSelector("img[alt=\"Select Help\"]")).click();
     String winHandleBefore = myD.getWindowHandle();        
       for(String winHandle : myD.getWindowHandles()){
       driver.switchTo().window(winHandle);
        }
       driver.switchTo().frame(0);
           driver.findElement(By.name("hier_data_id")).click();

showModalDialogウィンドウの処理方法について誰かが考えているなら、それは本当に役に立ちます。提案をいただければ幸いです。前もって感謝します !

4

1 に答える 1

0
import java.util.Iterator;
import java.util.Set;

private static String popUp;

//ポップアップ前にウィンドウハンドルを取得

Set<String> beforePopUp = driver.getWindowHandles();
    //do the click
driver.findElement(By.cssSelector("img[alt=\"Select Help\"]")).click();


  //get window handles after the click
Set<String> afterPopup = driver.getWindowHandles();

    //remove all window handles before the popup
 afterPopUp.removeAll(beforePopUp);
if(afterPopUp.size() == 1) {
popUp = (String) afterPopUp.toArray()[0];
 } else {// there might be more than on popups that might have been triggered by the click...do some error handling here}


 //switch to popUp
driver.switchTo().window(popUp);

//do your stuff
于 2012-08-09T20:48:56.040 に答える