当窗口未处于焦点时,Selenium Webdriver无法单击模式对话框
我打开了两个浏览器,SeleniumWebDriver可以在这两个浏览器之间切换。一个窗口位于前景,另一个窗口位于背景。在工作流中,后台窗口中会打开一个模式对话框,因此webdriver无法对其执行任何操作。除了将背景窗口置于前景之外,还有什么可能的解决方案吗?当窗口未处于焦点时,Selenium Webdriver无法单击模式对话框,selenium,Selenium,我打开了两个浏览器,SeleniumWebDriver可以在这两个浏览器之间切换。一个窗口位于前景,另一个窗口位于背景。在工作流中,后台窗口中会打开一个模式对话框,因此webdriver无法对其执行任何操作。除了将背景窗口置于前景之外,还有什么可能的解决方案吗? 我正在使用C#.循环浏览窗口句柄,并检查是否出现模态对话框 string current_window = driver.CurrentWindowHandle; foreach (string window in driver.Win
我正在使用C#.循环浏览窗口句柄,并检查是否出现模态对话框
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;
}
}
根据你所说的,这应该行得通。如果你找不到模态,那么可能有一个不同的问题,不仅仅是窗口没有聚焦。如果您担心其他错误,那么我会说,只捕获捕获捕获中的特定错误,让其他所有错误都浮起ElementNotFound
异常。我使用下面的代码
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();
}
}
您在代码方面做了哪些尝试?