zoukankan      html  css  js  c++  java
  • selenium.common.exceptions.JavascriptException: Message: javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite.

    1.这个项目是滑块缺口验证码,第一页点击滑块正常执行通过,第二页报错。

     

     perform无法执行,网上找了很多办法,如下:

    1.升级浏览器,本来就是权森版本

    2.升级驱动,本来就是权森版本

    3.升级selenium从3.1到3.4版本,说实话,惊呆我了,3.4特么的没有pause这个方法,手动滑稽~,没有这个方法,验证码也过不去,升级也没用

    4.使用JS执行按钮点击操作,的确是可以,但是我不要点击,我要左键点击保持不释放,手动滑稽~

    5.反正各种乱七八糟的方法都试过了,一团糟

    下面说下自己尝试的方法和思路:

    1.xpathhelper

     一直检查页面跳转或者html元素变动的情况下是否持续能获取到需要的元素,其实可以长时间获取到,说明xpath是没问题的哈

    2.查看页面html变化的规律,审查代码逻辑是否有失效的地方

    3.在页面执行某些操作后,打印页面源码或者元素信息查看是否有效定位元素

     4.如果还是不确定,还有几个办法

    F12 elements界面

     F12 Console界面

    $x('xpath表达式'),箭头的位置可以看到这个元素是唯一的

    元素获取都没问题的话,一起来看看这个错误是什么意思

     perform是

    from selenium.webdriver import ActionChains

    这个类执行的,官方的解释如下:

     

     再结合这个错误提示,大概意思就是ActionChains会产生类似于一个列表一样的东西,后面鼠标的操作都会按顺序提交到这个列表里,

    然后交由perform()一次直接执行,但是现在ActionChains中出现了两个相同的操作,或者是同一个步骤出现了两次,那么在第一个序列的操作

    执行完成之后,将此列表清空,上面的问题就可以处理掉了。

    恰好在国外的欧ver浮lower上看到一个方法:

    #action_chains.py文件中85行函数修改如下
    """
    Clears actions that are already stored locally and on the remote end
    """
    if self._driver.w3c:
        self.w3c_actions.clear_actions()
        for device in self.w3c_actions.devices:
            device.clear_actions()
    self._actions
    = []

    简单来说思路和上面说的一样,看到这个注释,突发奇想,如果ActionChains本身没有进行清空处理,

    那么在perform()执行之后再重申下清空掉之前的操作不就可以了吗

    slider = self.browser.find_element_by_xpath("/html/body/div[last()]/div[2]/div[2]/div[2]/div[2]")
    # if slider.is_displayed():
    self.action_chains.click_and_hold(slider)
    self.action_chains.pause(0.6)
    self.action_chains.move_by_offset(xoffset=xset, yoffset=0)
    self.action_chains.pause(0.9)
    self.action_chains.release()
    self.action_chains.perform()
    # 执行鼠标所有的操作之后,将ActionChains重置
    self.action_chains.reset_actions()

    于是很愉快了开始了摸鱼~~~~~

    自有风云来时雨, 似有风霜沾蓑衣
  • 相关阅读:
    PythonStudy——数据类型总结 Data type summary
    PythonStudy——可变与不可变 Variable and immutable
    PythonStudy——列表操作 List operatio
    PythonStudy——列表的常用操作 List of common operations
    PythonStudy——列表类型 List type
    PythonStudy——字符串扩展方法 String extension method
    PythonStudy——字符串重要方法 String important method
    AWT,Swing,RCP 开发
    JQuery插件机制
    最新知识网站
  • 原文地址:https://www.cnblogs.com/meipu/p/13749836.html
Copyright © 2011-2022 走看看