2017-10-16 75 views
4

在过去的几个月里,我一直在使用Selenium来自动化一个非常枯燥但是工作中非常重要的部分,它涉及上传表单。硒蟒蛇 - 如何处理随机弹出?

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

有没有办法运行我的弹出式处理代码,尽快引发错误框架生成的异常?

我可以将我的整个脚本包含在tryexcept块中,但是如何指示脚本从停止的位置恢复?

任何意见是非常感谢!

回答

1

我在工作的网站上也遇到过这个问题。我在我们的网站上发现的是,它不是真正的随机,而是一个计时器。所以基本上它的工作方式是客户来到网站。如果他们没有被提示注册X,那么他们会得到一个弹出窗口。如果他们注册或解散了弹出窗口,则会编写一个cookie来跟踪他们已经收到该消息。您想要查找该跟踪cookie并重新创建它以防止弹出窗口。

我所做的是发现的cookie,重新创建它的网站域名(如example.com/some404page一些由页)的错误页面,然后启动脚本正常。它完全阻止了弹出窗口的发生。

要了解,如果这是你的情况下,导航到主页(或任何为宜),只是等待弹出。这会让你了解计时器的时间长短。关闭弹出窗口并重新加载页面。如果弹出不再发生,那么我猜这是同一个机制。

要找到饼干,清除Cookies在您的浏览器,然后重新打开您的网站。 (不要关闭弹出窗口)。我使用Chrome,因此我将介绍如何执行此操作。一般方法应该可以在其他浏览器中使用,但具体步骤和命令名称可能会有所不同。

  1. 开拓devtools(F12)
  2. 导航到应用程序选项卡,找到饼干(左图)
  3. 展开饼干和点击你正在使用的网站的域名。其他网站可能存在大量Cookie,具体取决于您的网站。
  4. 单击全部清除按钮清除所有的cookie。
  5. 关闭弹出窗口并观察要创建的cookie。希望你会看到一个或只创建几个cookie。
  6. 注意的cookie的名称并删除它们一次一个,并重新加载页面,等待15秒的(或其他),看看是否弹出发生。

弹出窗口出现后,您知道您删除的最后一个cookie是您需要重新创建的cookie。您现在可以编写一个快速函数,通过导航到dummy错误页面example.com/some404page并使用Selenium创建cookie,并创建cookie。在脚本开始时调用该函数。利润。

+0

这几乎解决了我的问题!在我手动关闭弹出窗口后,我检查了浏览器Cookie并发现了一个设置为true的“InvitePresented”Cookie。如果我在脚本的开始处添加此cookie并将其设置为true,则不再显示弹出窗口!感谢您的洞察! – WhisperingZebra

0

我遇到过类似的情况。

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

然后,使用硒库(如JavascriptExecutor)执行脚本,只要您打开网页,以便您看不到随机出现的弹出窗口。