2017-01-21 46 views
1

我有一个使用chromedriver的Facebook的小刮板。 但是,每次我登录几秒钟后,我都需要点击一些按钮来允许Facebook通知。有没有办法自动做到这一点?硒蟒蛇:自动点击允许通知请求

我见过一些建议按下标签三次然后进入,但我不知道什么时候我会被提示的请求,我不想在错误的时间按东西。

创建webdriver时有什么可以成为一个吗?

回答

3

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

然而有办法效仿饼干用WebDriver进行测试。

考虑http://www.cnn.com页面例如。你对那个网页运行一个新的测试时,都会在页面会弹出询问你是否接受他们的Cookie政策底部的酒吧:

enter image description here

的页面存储你曾经点击的事实“我同意“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浏览器导航页面,确认对话框弹出,而不是第二次。

下面是一些cookie API在Python中看起来像什么的例子:How to save and load cookies using python selenium webdriver