【问题标题】:Selenium Python: auto click allow for notification requestsSelenium Python:自动点击允许通知请求
【发布时间】:2017-01-22 00:15:55
【问题描述】:

我有一个使用 chromedriver 的 Facebook 小刮刀。 但是,每次我在几秒钟后登录时,我都必须单击某个按钮以允许 Facebook 通知。有没有办法自动完成?

我看到有人建议按三下 Tab 然后输入,但我不知道我什么时候会收到请求的提示,我不想在错误的时间按东西。

在创建 webdriver 时有什么可以合二为一的吗?

【问题讨论】:

    标签: python-2.7 selenium-webdriver selenium-chromedriver


    【解决方案1】:

    这很可能是因为每次您启动一个新的 ChromeDriver 实例时,您都会获得一个全新的 Chrome 配置文件,就像您打开一个新的隐私浏览会话一样。因此,您要测试的页面通过 cookie 定义的所有客户端特定设置都将丢失,必须重新设置。 (这是一件好事的主要原因是,对于自动化测试,您希望页面在每次新测试访问时都处于相同的状态。)

    但是,有一些方法可以模拟 cookie 以使用 WebDriver 进行测试。

    示例

    以页面http://www.cnn.com 为例。每次您对该页面运行新测试时,页面底部都会弹出一个栏,要求您接受他们的 cookie 政策:

    该页面会在 cookie 本身中存储您曾经单击“我同意”按钮的事实。您可以使用 Chrome 内容设置来确定某个网页设置了哪些 cookie。详细信息可以在这里找到:https://superuser.com/questions/244062/how-do-i-view-add-or-edit-cookies-in-google-chrome

    对于这个特定页面,负责 cookie 的名称是“CNNtosAgreed”,并且在您单击“我同意”按钮后设置的值是“true”。

    在您的 WebDriver 脚本中,您可以使用 manage cookies 功能来设置特定的 cookie,以便您正在测试的页面认为您以前访问过它。

    在 Java 客户端绑定中,如下所示:

    Java

    driver.get("http://edition.cnn.com/");
    driver.manage().addCookie(new Cookie("CNNtosAgreed", "true", ".cnn.com", "/", null));
    driver.get("http://edition.cnn.com/");
    

    请注意 Chrome 第一次导航到该页面时会弹出确认对话框,但不是第二次。

    以下是 Python 中 cookie API 的一些示例:How to save and load cookies using python selenium webdriver

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 2019-09-01
      • 1970-01-01
      • 2020-05-17
      • 2021-09-13
      • 2012-02-28
      • 1970-01-01
      相关资源
      最近更新 更多