栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

  • 设置一个特定的cookie ,该 cookie 将禁止预见弹出窗口“假装”您已经将其关闭。目前究竟要设置哪个cookie是一个悬而未决的问题。也有与此相关的线程:使用Python和Selenium处理随机的ForeSee弹出窗口
  • *在与网站交互期间,始终 *检查“弹出窗口”的存在 。弹出窗口不是硒意义上的经典“警报”,而 只是 具有以下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)

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

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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659723.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号