如何根据图像按OK
按钮。
我可以切换到此窗口。但是直到我单击“确定”时它才被加载,因此没有任何元素。
警报句柄也无济于事。
Autoit也无法检测到此弹出消息。
disable-notifications也无济于事。
有任何想法吗?
添加了两个快照。
Firefox快照:
Chrome快照:
p.companieGenreal.sActivities().click();
driver.switchTo().defaultContent();
String parent = driver.getWindowHandle();
p.companieGenreal.sAddNew().click();
p.companieGenreal.sAddJobOrder().click();
p.companieGenreal.sContract().click();
swithToChildWindow(parent);
driver.switchTo().alert().accept();
答案 0 :(得分:2)
要将其视为警报,请尝试以下操作:
Alert a = driver.switchTo().alert();
a.confirm();
如果可以使用Escape键将其关闭,请按以下方式发送Escape键(如果在按下Enter键时将其关闭,则发送 ENTER ):
Actions action = new Actions(driver);
action.sendKeys(Keys.ESCAPE);
答案 1 :(得分:1)
将要卸载窗口,文档及其资源时,将触发beforeunload
事件。此时文档仍可见,事件仍可取消。
注意:自2011年5月25日起,HTML5 specification声明在以下情况下对window.alert()
,window.confirm()
和window.prompt()
方法的调用可能会被忽略这个事件。
有多种方法可以禁用此弹出窗口,如下所示:
Firefox:如果您将 Firefox 用作 Browser Client ,则可以使用FirefoxOptions()
的实例并设置首选项 { {1}} 到 dom.disable_beforeunload
,如下所示:
true
Chrome:如果您将 Chrome 用作 Browser Client ,则可以使用System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
FirefoxOptions firefox_option = new FirefoxOptions();
firefox_option.addPreference("dom.disable_beforeunload", true);
WebDriver firefox_driver = new FirefoxDriver(firefox_option);
firefox_driver.get("https://stackoverflow.com/");
的实例并添加参数 { {1}} 如下:
ChromeOptions()
答案 2 :(得分:0)
如果这是警报,则可以使用以下方法处理:
1)。 driver.switchTo()。alert()。accept();
2)。 “动作类”
Actions builder=new Actions(driver);
builder.sendKeys(keys.ESCAPE);
3)。如果以上两种方法均无效,则有一种特殊的警报类型称为“甜警报”,可以对其进行检查并为此编写代码。
答案 3 :(得分:0)
尝试使用:
public static void acceptAlertUsingJs(WebDriver driver) {
((JavascriptExecutor)driver).executeScript("window.alert = function(msg){return true;};");
((JavascriptExecutor)driver).executeScript("window.prompt = function(msg) { return true; }");
((JavascriptExecutor)driver).executeScript("window.confirm = function(msg) { return true; }");
}
答案 4 :(得分:0)
请尝试以下代码,看看是否有帮助:
if (isAlertPresent()){
driver.switchTo().alert().accept();
driver.switchTo().defaultContent();
}
}
public static boolean isAlertPresent() {
try {
driver.switchTo().alert();
Thread.sleep(5000);
return true;
}// try
catch (Exception e) {
return false;
}// catch
}
答案 5 :(得分:0)
我遇到了同样的问题,可以打开模式弹出窗口,我可以切换到该模式,然后单击“确定”按钮,但无法获取其中的文本。模态对话框在屏幕截图中共享,并且没有html标记,因此我无法使用任何定位器在其中定位文本。我尝试使用driver.switchTo()。alert()。getText()来获取其中存在的文本。