无法使用 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 中处理警报的主要内容,如果未能解决你的问题,请参考以下文章
无法解决 MoveTargetOutOfBoundsException 的问题:或无法滚动到 Firefox 上的视图 [重复]
无法连接到 iPhone se2 上的 React-Native 语音通话
无法从 AWS 机器上的 python 中的 selenium 调用 firefox
Firefox 上的 Google Analytics JS 代码中的“返回语句后代码无法访问”错误 - 这是我的错吗?