【问题标题】:How to check if an alert is present on a page with JavaScript or Selenium如何使用 JavaScript 或 Selenium 检查页面上是否存在警报
【发布时间】:2019-03-23 17:46:58
【问题描述】:

我正在制作一个机器人,这个机器人一直在搜索,但有时当它搜索时,会出现一条警报,要求用户访问他们的位置。如何检查此警报是否存在或最好禁用它?

到目前为止,我已经尝试通过 about:config: 禁用一些东西:

    var prefs = Components.classes["@mozilla.org/preferences- 
       service;1"].getService(Components.interfaces.nsIPrefBranch);

    prefs.setIntPref("network.cookie.cookieBehavior",  4);

    prefs.setBoolPref("privacy.donottrackheader.enabled", true); 

    prefs.setIntPref("permissions.default.geo", 2);

但仍然会弹出警报。我还尝试使用预先安装的插件制作一个新的 Firefox 配置文件,以阻止对话框和弹出窗口,但它仍然给我对话框。

这次我真的被难住了。如果您知道如何检查页面是否使用 JS 或 Selenium python 发出警报,那么请在这一点上告诉我原因,这将对我有很大帮助。如果您知道如何禁用 javascript 警报,那就太好了。

【问题讨论】:

  • 这可能会有所帮助,可能重复stackoverflow.com/questions/38767551/…
  • @David 它实际上是一个警报而不是弹出窗口。如果它是一个弹出窗口,我的插件会阻止它。
  • 你用的是chrome和firefox吗?
  • @PritamMaske Firefox。

标签: javascript python selenium


【解决方案1】:

您可以通过以下方式禁用警报:

window.alert = () => false

来自python:

driver.execute_script("window.alert = () => false")

【讨论】:

    【解决方案2】:

    使用:

    prefs.setIntPref("permissions.default.desktop-notification",  1);
    

    【讨论】:

      【解决方案3】:

      假设一个存在于 try/catch 块中的非定位元素的异常上,然后尝试使用

      driver.switchTo().alert().dismiss();
      

      继续预期的行为:)

      【讨论】:

        猜你喜欢
        • 2011-10-27
        • 2013-09-30
        • 2019-08-22
        • 2011-04-24
        • 2012-07-13
        • 2011-06-19
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        相关资源
        最近更新 更多