【问题标题】:Handle random ForeSee popup using Python and Selenium使用 Python 和 Selenium 处理随机的 ForeSee 弹出窗口
【发布时间】:2018-03-27 16:24:02
【问题描述】:

我是编码新手,我尝试使用 Selenium 和 Python 来点击网站并填充购物车。除了随机的 ForeSee 调查弹出窗口外,我的一切都运行良好。当它出现时(它并不总是出现在同一个位置),我的代码在那时停止工作。

我阅读了 ForeSee 文档,它说“...当显示邀请时,fsr.r...cookie 被删除。此 cookie 可防止用户在 X 天内再次被邀请(默认 90 天)。”

希望快速修复,我创建了一个单独的 Firefox 配置文件并浏览了该网站并获得了 ForeSee 弹出式邀请 - 手动使用该配置文件时不再弹出。但是我在使用 Selenium 时仍然会弹出。

我使用了这个代码:

fp = webdriver.FirefoxProfile('C:\path\to\profile')
browser = webdriver.Firefox(firefox_profile=fp)

编辑:我让 cookie 工作了。我使用的是本地文件夹而不是 C:\path\to\profile 中的漫游文件夹。使用漫游文件夹解决了这个问题。

我的问题编辑删除了关于 cookie 不起作用的部分

有人可以建议代码来永久处理随机出现在随机页面上的 ForeSee 弹出窗口吗?

【问题讨论】:

  • 您的问题现在好像解决了?
  • 它以一种快速修复的方式解决。通过使用 cookie,我需要在 cookie 过期之前手动访问网站并运行它。我不知道它什么时候到期,只是默认是90天。使用 cookie 避免弹出窗口总比没有好,但我更想知道如何识别 ForeSee 调查弹出窗口并对其进行处理,以便我的代码恢复运行,就好像它不存在一样。
  • @JRrcgp 一个相当相关的问题:stackoverflow.com/q/51978555/771848.

标签: python selenium popup


【解决方案1】:

我正在使用 Protractor 和 JS,所以我不能给你实际的代码来处理这个问题,但我可以告诉你如何解决这个问题。

简而言之

在浏览器控制台中执行以下脚本时 -

window.FSR.setFSRVisibility(true);

它使 ForeSee 弹出窗口出现在其余 HTML 元素之后。并且不再影响 UI 测试

所以我的量角器脚本看起来像这样

await browser.executeScript(
  `window.FSR.setFSRVisibility(true);`
);

理论

因此,ForeSee 是可以与任何网络应用程序集成的服务之一,它将通过在网站范围内执行代码,从其 API 中提取 js 代码并更改应用程序的 HTML。这种公司的另一个例子是walkme

显然,在现代世界中,如果这些人可以覆盖网页,他们应该有一个配置以使其成为可选(至少对于较低的环境)并且他们确实做到了。我提到的解决方案来自this page。但是假设他们没有这样的选择,人们可以联系他们并询问如何解决他们的弹出窗口。即使他们没有这样的选项,他们也会很乐意将其视为一项改进功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-03
    • 2018-03-28
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    相关资源
    最近更新 更多