无法让XPath单击硒中的d出窗口

无法让XPath单击硒中的d出窗口,第1张

无法让XPath单击硒中的d出窗口

您偶尔会看到的是 “预见d出窗口” ,该 d出窗口 通常会随机显示。

我可以想到5种通用方法:

  • 设置一个特定的cookie ,该 cookie 将禁止预见d出窗口“假装”您已经将其关闭。目前究竟要设置哪个cookie是一个悬而未决的问题。也有与此相关的线程:使用Python和Selenium处理随机的ForeSeed出窗口
  • *在与网站交互期间,始终 *检查“d出窗口”的存在 。d出窗口不是硒意义上的经典“警报”,而 只是 具有以下HTML表示形式 的“覆盖”
    <div  aria-labelledby="fsrHeading"><div  data-isbackdrop="true">    <div  tabindex="1"         id="acsMainInvite" role="dialog" aria-labelledby="fsrHeading">        <div  role="document"> <div ><img     src="//gateway.foresee.com/sites/sec-gov/production/trigger/sitelogo.png"      title="" alt=""> <img     src="https://static.foresee.com/logos/foresee/150_67.png"      title="ForeSee" alt="ForeSee">     <div title="ForeSee" alt="ForeSee"         ></div>         ...

然后,您可以例如检查“拒绝”按钮的存在,然后单击是否存在:

    <a href="#" tabindex="2"  title="" role="button"></a>
  • 您还可以 “阻止”预见 要加载的 JS脚本 ,例如,使用浏览器mobproxy来阻止来自“ foresee.com”的所有流量。或者,在类似的轨迹上-您可以从广告拦截器开始硒,该广告拦截器可以开箱即用地阻止“预见”

  • 或者,你可以 重写

    showInvite()
    功能的“先知先觉”全局对象:

    driver.execute_script("window.FSR.showInvite = function () {};")

请注意,导航到新页面后,您每次都需要调用此脚本。

  • 经过一些反向工程后,我发现“ foresee” JS对象具有此全局配置,其中包含许多有趣的信息,包括 设备黑名单
    device_blacklist: ["HTC_Rezound", "blackberry"]

然后,您可以覆盖浏览器的用户代理,并假装它来自某个Blackberry设备:

    BLACKBERRY_UA = "Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+"opts = Options()opts.add_argument("user-agent={0}".format(BLACKBERRY_UA))driver = webdriver.Chrome(chrome_options=opts)

第二个选项虽然在技术上更具挑战性且更容易出错,但由于您会不断检查是否存在此d出窗口,因此会降低速度。好吧,至少直到您解雇它为止。

第四个选项很有希望,但我尚未对其进行全面测试。

最后一个选项,不管听起来多么疯狂,实际上对我来说都是有效的。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5661790.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存