Selenium Python - 如何处理随机弹出窗口?

时间:2017-10-16 18:17:04

标签: python selenium automation selenium-chromedriver

在过去的几个月里,我一直在使用Selenium来自动化我工作中非常无聊但必不可少的部分,包括上传表格。

最近,该网站实施了一个反馈调查,随机弹出并将驱动程序切换到新框架。我编写了可以处理此弹出窗口的代码并切换回我的默认框架,但问题在于随机性。

有没有办法在错误框架生成的异常被抛出后立即运行我的弹出处理代码?

我可以将我的整个脚本包含在tryexcept块中,但是如何指导脚本从停止的位置进行备份?

非常感谢任何建议!

2 个答案:

答案 0 :(得分:1)

我在我工作的网站上遇到过这种情况。我在我们的网站上发现的是,它不是随机的,而是在计时器上。所以基本上它的工作方式是客户来到网站。如果没有提示他们注册X,那么他们会弹出一个弹出窗口。如果他们注册或取消弹出窗口,则会写入cookie以跟踪他们已收到消息。您希望找到跟踪cookie并重新创建它以防止弹出窗口。

我所做的是找到该cookie,在站点域的错误页面上重新创建它(某些组成页面如example.com/some404page),然后正常启动脚本。它完全阻止了弹出窗口的发生。

要查明这是否属于您的情况,请导航至主页(或任何适当的内容),然后等待弹出窗口。这将让您了解计时器的持续时间。关闭弹出窗口并重新加载页面。如果弹出窗口没有再次出现,那么我猜它是相同的机制。

要查找Cookie,请在浏览器中清除Cookie并再次打开您的网站。 (不要关闭弹出窗口)。我使用Chrome,因此我将介绍如何操作。一般方法应该适用于其他浏览器,但具体步骤和命令名称可能会有所不同。

  1. 打开devtools(F12)
  2. 导航到“应用程序”选项卡,然后找到Cookie(左侧面板)
  3. 展开Cookie并点击您正在使用的网站的域名。其他网站可能会有很多Cookie,具体取决于您的网站。
  4. 单击全部清除按钮清除所有cookie。
  5. 关闭弹出窗口并观察要创建的Cookie。希望你能看到一个或只是创建一些cookie。
  6. 记下cookie的名称并一次删除一个,然后重新加载页面并等待15秒(或其他),看看是否出现了弹出窗口。
  7. 弹出窗口后,您知道删除的最后一个cookie是您需要重新创建的cookie。您现在可以编写一个快速函数,通过导航到虚拟错误页面example.com/some404page并使用Selenium创建cookie,并创建cookie。在脚本开头调用该函数。利润。

答案 1 :(得分:0)

我遇到过类似的情况。

我建议您与前端开发人员或提供反馈调查的公司联系,并要求他们提供脚本以禁用您运行的浏览器会话的弹出窗口。

然后,只要打开网页,就使用selenium库(如 JavascriptExecutor )执行脚本,这样就不会看到随机出现的弹出窗口。