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

Whi*_*bra 5 python selenium automation selenium-chromedriver

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

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

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

我能包住我的整个脚本在tryexcept块,但我怎么引导脚本来接从那里离开备份?

任何建议都非常感谢!

Jef*_*ffC 2

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

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

要了解您是否属于这种情况,请导航到主页(或任何合适的页面),然后等待弹出窗口。这会让你知道计时器有多长。关闭弹出窗口并重新加载页面。如果弹出窗口不再出现,那么我猜这是相同的机制。

要找到 cookie,请清除浏览器中的 cookie,然后再次打开您的网站。(先不要关闭弹出窗口)。我使用 Chrome,所以我将描述如何操作。一般方法应该适用于其他浏览器,但具体步骤和命令名称可能会有所不同。

  1. 打开开发工具(F12)
  2. 导航到“应用程序”选项卡并找到“Cookie”(左侧面板)
  3. 展开 Cookie 并单击您正在使用的网站的域。其中可能有很多来自其他网站的 cookie,具体取决于您的网站。
  4. 单击“全部清除”按钮可清除所有 cookie。
  5. 关闭弹出窗口并观察要创建的 cookie。希望您会看到创建的一个或几个 cookie。
  6. 记下 cookie 的名称,一次删除一个,然后重新加载页面并等待 15 秒(或其他时间),看看是否会出现弹出窗口。

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