2014-06-30 36 views
0

我打開2個瀏覽器並且Selenium Webdriver可以在這兩者之間切換。一個窗口在前景中,另一個在後臺。在工作流程中,模式對話框會在後臺窗口中打開,因此webdriver無法對其執行任何操作。除了將背景窗口置於前景之外,還有其他解決方案嗎? 我正在使用C#。當窗口沒有對焦時,Selenium Webdriver無法點擊模式對話框

+0

你在代碼方面嘗試過什麼? – Purus

回答

1

循環顯示您的窗口句柄,並檢查是否出現模態對話框。

string current_window = driver.CurrentWindowHandle; 
foreach (string window in driver.WindowHandles) 
{ 
    driver.SwitchTo().Window(window); 

    if (GetModal()) 
    { 
     //do actions here 
     break; 
    } 
} 
driver.SwitchTo().Window(current_window); //To put you back where you started. 

private bool GetModal() 
{ 
    Try 
    { 
     IWebElement modal = driver.FindElementByXPath(""); 
     return true; 
    } 
    catch 
    { 
     return false; 
    } 
} 

根據你應該把這個工作。如果你找不到模態,那麼可能會有一個不同的問題,而不是窗口沒有被聚焦。如果您擔心其他錯誤,那麼我會說只捕獲捕獲中的特定錯誤,並讓其他所有的錯誤都浮上去。

0

我使用下面的代碼

try{ 

//your code which will generate Modal Dialog  

} catch (Exception e) { 

      if (e.getMessage().contains("Modal dialog present")) {//For Handling modal dialog in firefox 
       (new Robot()).keyPress(java.awt.event.KeyEvent.VK_ESCAPE); 
       (new Robot()).keyRelease(java.awt.event.KeyEvent.VK_ESCAPE); 

      }else if(e.getMessage().contains("unexpected alert open")){//For Handling modal dialog in chrome 

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

      } 

     } 
相關問題