Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当页面上的元素被禁用时,Selenium Java Chrome发送回车键_Java_Selenium_Selenium Chromedriver - Fatal编程技术网

当页面上的元素被禁用时,Selenium Java Chrome发送回车键

当页面上的元素被禁用时,Selenium Java Chrome发送回车键,java,selenium,selenium-chromedriver,Java,Selenium,Selenium Chromedriver,我需要通过单击“确定”关闭选择“保存”后弹出的对话框,但是在弹出后右键单击无法检查页面上的任何元素以及对话框(F12没有帮助) 或者,要关闭对话框,可以输入enter键,但是我无法发送下面列出的enter键 Actions action = new Actions(driver); //attempt 1 action.sendKeys(Keys.RETURN); action.sendKeys(Keys.RETURN).perform(); //attempt 2 这两个操作都不会关闭对话框

我需要通过单击“确定”关闭选择“保存”后弹出的对话框,但是在弹出后右键单击无法检查页面上的任何元素以及对话框(F12没有帮助)

或者,要关闭对话框,可以输入enter键,但是我无法发送下面列出的enter键

Actions action = new Actions(driver); //attempt 1
action.sendKeys(Keys.RETURN);
action.sendKeys(Keys.RETURN).perform(); //attempt 2
这两个操作都不会关闭对话框。我也执行了驾驶员开关。除了对话框弹出窗口外,还有一个outlook电子邮件弹出窗口。这会在识别警报弹出窗口时产生问题吗?请告知如何传递enter键以关闭对话框

发现问题,这是由于我在单击后使用的Thread.sleep(3000),我猜这导致它无法识别警报。我可能也在工作。谢谢你的帮助

由于在弹出窗口后单击鼠标右键无法检查任何元素,该弹出窗口指示由Javascript生成的警报,您可以使用以下代码行:

Alert myAlert = new WebDriverWait(driver, 10).until(ExpectedConditions.alertIsPresent());
myAlert.accept();

更新 根据最新评论:

  • 观察:除了提醒消息外,还会弹出outlook邮件

  • 结论:如果outlook mail弹出,可能不是可疑的警报。您应该能够跟踪HTMLDOM中的元素


更新B 根据最新评论:

  • 观察:当我单击“保存”时,会发生两件事:[1]:Outlook电子邮件弹出窗口[2]:保存页面上的警报通知,说明记录正在更新

  • 结论:听起来像两个
    window\u手柄
    opening,将它们视为window\u手柄


解决方案1:尝试切换到弹出窗口并处理它

new WebDriverWait(driver, 15).until(ExpectedConditions.alertIsPresent());
driver.switchTo().alert().accept();
解决方案2:如果你想使用键盘键

Actions action = new Actions(driver);
new WebDriverWait(driver, 15).until(ExpectedConditions.alertIsPresent());
action.sendKeys(Keys.RETURN).perform();

在这两种情况下,使用“等待”直到收到警报

首先,检查单击“确定”后弹出的对话框是JavaScript警报还是其他内容

如果对话框是JavaScript警报,请尝试下面的代码

new WebDriverWait(driver, 10).until(ExpectedConditions.alertIsPresent());

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

RETURN
更改为
ENTER
会有什么不同吗?@jsheeran-hi,tested也没有帮助hi,我也尝试了更长的等待超时时间,但没有帮助。除了提示消息外,还会弹出outlook邮件发送回车键是否也会出现问题?org.openqa.selenium.TimeoutException:等待警报发出60秒后超时present@learning如果弹出
outlook邮件
,则可能不是可疑的警报。您应该能够跟踪HTMLDOM中的元素。也许相关的HTML可以为我们提供一些线索。更清楚地说,当我单击“保存”时,会发生两件事:[1]:Outlook电子邮件弹出窗口[2]:保存页面上的警报通知,说明记录正在更新,因此我试图关闭[2]:警报通知,因此仍然需要跟踪HTML DOM中的元素?@学习良好,听起来像一个
窗口
现在,将它们视为
窗口句柄
@debanjab-嗨,我尝试了driver.switch to.window(abc)以及通过发送“回车”也不起作用。甚至我也尝试过driver.switchTo.frame(xyz)-我认为这不是必需的,对吗?@Dheenmanth Bhandarkar-嗨,是的,尝试了解决方案1,但没有帮助,收到以下错误消息-org.openqa.selenium.TimeoutException:等待警报出现60秒后超时这是因为,您的应用程序未在指定的等待时间内显示弹出窗口,或者它不是警报消息,您必须使用driver.findElement(By)来识别它。不要右键单击并检查它(这是不可能的),而是尝试在弹出出现之前识别页面上的任何元素,以便在弹出出现时可以找到元素的标识符。