zoukankan      html  css  js  c++  java
  • Selenium2+python自动化46-js解决click失效问题【转载】

    本篇转自博客:上海-悠悠

    原文地址:http://www.cnblogs.com/yoyoketang/tag/js/

    前言

    有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应。这种问题遇到了,是比较头疼的,因为没任何报错,只是click事件失效了。

    本篇用2种方法解决这种诡异的点击事件失效问题

    一、遇到的问题

    1.在练习百度的搜索设置按钮时,点保存设置按钮,alert弹出没弹出(代码没报错,只是获取alert失败),相信不只是我一个人遇到过。

    二、点击父元素

    1.遇到这种问题,应该是前面操作select后导致的后遗症(因为我注释掉select那段是可以点击成功的)

    2.第一种解决办法,先点击它的父元素一次,然后再点击这个元素

    3.实现代码如下

    三、js直接点击

    1.遇到这种诡异问题,是时候出绝招了:js大法

    2.用js直接执行点击事件

    四、参考代码

    # coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.support.select import Select
    import time
    driver = webdriver.Firefox()
    url = "https://www.baidu.com"
    driver.get(url)
    time.sleep(3)
    mouse = driver.find_element("link text", "设置")
    ActionChains(driver).move_to_element(mouse).perform()
    time.sleep(3)
    driver.find_element("link text", "搜索设置").click()
    time.sleep(3)
    s = driver.find_element("id", "nr")
    Select(s).select_by_visible_text("每页显示50条")

    # 方法一:先点父元素 交流QQ群:232607095
    # driver.find_element("id", "gxszButton").click()
    # driver.find_element("class name", "prefpanelgo").click()

    # 方法二:用js直接去点击 交流QQ群:232607095
    js = 'document.getElementsByClassName("prefpanelgo")[0].click();'
    driver.execute_script(js)

  • 相关阅读:
    2019.04.19 坦克大战
    2019.04.18 异常和模块
    2019.04.17 面向对象编程篇207
    fork操作时的copy-on-write策略
    Redis阻塞原因
    Redis持久化-fork操作
    Redis持久化-AOF重写
    Redis持久化-aof
    Redis持久化
    Shopify给左右两边布局的banner图加链接,链接失败
  • 原文地址:https://www.cnblogs.com/caoj/p/7792683.html
Copyright © 2011-2022 走看看