无法使用 java 在 firefox 上的 selenium webdriver 中处理警报

Posted

技术标签:

【中文标题】无法使用 java 在 firefox 上的 selenium webdriver 中处理警报【英文标题】:Unable to handle alerts in selenium webdriver on firefox using java 【发布时间】:2019-10-29 11:01:45 【问题描述】:

当我登录我的网站时,会弹出一个警报“您是否允许 MyWeb 向您发送通知”,但由于它没有 html,我无法找到它的定位器。

try 
        WebDriverWait wait=new WebDriverWait(driver,10);
        Alert alert=wait.until(ExpectedConditions.alertIsPresent());
        presentFlag=true;
        alert.accept();
    
catch (Exception e) 
        e.printStackTrace();
    

【问题讨论】:

你确定这是一个JS警报吗?听起来不像是一个给定的描述。运行代码时会发生什么?错误是什么?您应该编辑您的问题并在此处发布完整的错误消息。 【参考方案1】:

当你实例化你的 webdriver tyr 时:

FirefoxProfile ffProfile = new FirefoxProfile();
ffProfile.setPreference("permissions.default.desktop-notification", 1);
FirefoxOptions ffOpts = new FirefoxOptions();
ffOpts.setProfile(ffProfile);
WebDriver driver = new FirefoxDriver(ffOpts);

【讨论】:

Alexey,当我尝试使用您提到的解决方案时,我的浏览器卡住了,无法访问 URL,我在 setBrowserConfig() 方法中使用了此代码。 你能显示你的setBrowserConfig()方法代码吗? public static void setBrowserConfig() System.setProperty("webdriver.gecko.driver","D:\\geckodriver.exe"); //try to handle pop up FirefoxProfile ffProfile = new FirefoxProfile(); ffProfile.setPreference("permissions.default.desktop-notification", 1); FirefoxOptions ffOpts = new FirefoxOptions(); ffOpts.setProfile(ffProfile); WebDriver driver = new FirefoxDriver(ffOpts); //driver=new FirefoxDriver(); 您应该使用driver = new FirefoxDriver(ffOpts); 而不是WebDriver driver = new FirefoxDriver(ffOpts); //driver=new FirefoxDriver();,否则您将更改仅在您的方法中本地可见的webdriver。 Alexey 我将 WebDriver 更改为驱动程序,并添加了以下首选项,现在它工作正常。 ` ffOpts.addPreference("media.navigator.permission.disabled", true);` 谢谢你的帮助。【参考方案2】:

请尝试以下功能,

警报警报 = driver.switchTo().alert();

alert.accept();

【讨论】:

您所建议的与萨曼已有的相同。 EC.alertIsPresent() 返回 Alert 存储在 alert 中,然后被接受。 嗨,Jeffc,如果我错了,请纠正我..根据我上面的评论,驱动程序会将焦点移到弹出窗口,所以我不认为 saman 的建议和我的评论是一样的。 wait.until(EC.alertIsPresent()) 还在接受之前将上下文切换到警报,因此两者是等效的。我只是尝试确认。 酷...谢谢@JeffC

以上是关于无法使用 java 在 firefox 上的 selenium webdriver 中处理警报的主要内容,如果未能解决你的问题,请参考以下文章

Java SE上的Websocket?

无法解决 MoveTargetOutOfBoundsException 的问题:或无法滚动到 Firefox 上的视图 [重复]

无法连接到 iPhone se2 上的 React-Native 语音通话

无法从 AWS 机器上的 python 中的 selenium 调用 firefox

Firefox 上的 Google Analytics JS 代码中的“返回语句后代码无法访问”错误 - 这是我的错吗?

按钮上的 jQuery 事件冒泡在 Firefox 中无法按预期工作