使用Python和Selenium处理随机的ForeSee弹出窗口

时间:2018-03-27 16:24:02

标签: python selenium popup

我是新编码并尝试使用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中使用Local文件夹而不是Roaming文件夹。使用漫游文件夹解决了这个问题。

我的问题已修改以删除有关Cookie无效的部分

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

1 个答案:

答案 0 :(得分:0)

我正在将Protractor与JS配合使用,因此我无法为您提供实际的代码来处理该问题,但是我可以为您提供解决方法。

简而言之

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

window.FSR.setFSRVisibility(true);

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

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

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

理论

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

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