2012-08-09 85 views
1

我使用Selenium webdriver(java)自動化Web應用程序。我在應用程序的其他部分處理了彈出窗口,但我無法處理showModalDialog窗口。應用程序具有隻讀文本框,我必須通過單擊搜索按鈕來填充它,這將打開新的彈出窗口。無法處理Selenium Webdriver(Java)中的showModalDialog窗口

此Textbox和Serach按鈕的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窗口的想法,這將是非常有益的。建議將不勝感激。 在此先感謝!

+0

我已經編輯我的question.Earlier我以爲是彈出窗口,但研究後,我才知道,這是在showModalDialog窗口之前獲得窗口句柄。 – 2012-08-10 10:03:48

回答

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 
+0

很多感謝您的回覆,我編輯了我的問題。我無法處理的窗口是showModalDialog窗口。如果您有關於如何處理showModalDialog窗口的想法,請分享。 – 2012-08-10 10:06:19

+0

如果窗口獲得焦點後,你點擊..然後你應該直接能夠與窗口上的元素進行交互......嘗試插入一些等待時間,然後在窗口中找到您的iframe ... – StatusQuo 2012-08-10 14:15:29

+0

現在我只能在IE Driver上與showModalDialog窗口元素交互,我提到了Selenium討論頁面中提供的一些解決方法。 Firefox驅動程序和Chrome驅動程序似乎不支持showModalDialog窗口。這個問題仍然存在(問題284)。 – 2012-08-10 18:02:11

相關問題