• selenium 常见操作,使用 ActionChains 类来进行鼠标操作


    鼠标操作

    • 由 selenium 的 ActionChains 类来完成模拟鼠标操作。ActionChains(译:按可深柴死)

    鼠标操作步骤:ActionChains

    • 1、实例化
    • 2、调用对元素的鼠标操作方法
    • 3、 调用perform()执行。

    需要引入 ActionChains 类:

    from selenium.webdriver.common.action_chains import ActionChains

    示例:ActionChains(driver).方法名1().context_ click() perform()

    ActionChains类里面的方法行为:
    初始化的时候需要传driver 对象,内置的一个空列表中:(译:)

    • perform:执行所有的行为
      • (译:泼峰)执行所有存储的操作
    • reset_actions:将整个列表清空
      • (译:瑞斯特.安可深思)清除已在本地和远程端存储的操作  
    • click:点击
      • (译:可立克)点击一个元素。  
    • click_and_hold:拖拽
      • (译:可立克.按得.后的)按住元素上的鼠标左键。不松  
    • context_click:右击
      • (译:康泰克斯特.可立克)对元素执行上下文单击(右击)。  
    • double_click:双击
      • (译:大泊儿.可立克)双击其中的一个元素。
    • drag_and_drop:拖拽到目标后松开
      • (译:转个.按得.赵坡)按住源元素上的鼠标左键,然后移动到目标元素并释放鼠标按钮。    
    • drag_and_drop_by_offset:偏移拖拽
      • (译:转个.按得.赵坡.白.奥佛赛特)按住源元素上的鼠标左键,然后移动到目标偏移量并释放鼠标按钮。   
    • key_down:在一个元素上按住一个键不松
      • (译:k当)只发送一个按键,不释放它。只能与修改键(控制,Ctrl、Alt和Shift)一起使用。  
    • key_up: 松开按键
      • (译:K阿婆)释放修改键。  
    • move_by_offset:鼠标移动
      • (译:目.白.奥佛赛特)将鼠标移动到当前鼠标位置的偏移量。  
    • move_to_element:鼠标悬浮
      • (译:目.图.按了们特)将鼠标移动到元素的中间。  
    • move_to_element_with_offset:鼠标坐标偏移
      • (译:目.图.按了们特.位子.奥佛赛特)将鼠标移动指定元素的偏移量。偏移量相对于元素的左上角。  
    • pause:暂停
      • (译:普斯)在指定的持续时间内暂停所有输入(以秒为单位)--每个动作执行后需要暂停几秒不执行之后操作  
    • release:松开
      • (译:瑞丽斯)释放元素上被按住的鼠标按钮。  
    • send_keys:输入
      • (译:森德.K死)向元素发送键。  
    • send_keys_to_element:在元素上输入文本
      • (译:森德.K死.图.按了们特)  
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    
    driver = webdriver.Chrome()
    
    driver.get("http://www.baidu.com")
    
    # 找到元素
    ele = driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_settingicon"]')
    # 1、鼠标操作实例化;鼠标悬浮在百度首页“设置”按钮上方,暂停0.5秒,点击操作,perform执行之前的所有操作
    ActionChains(driver).move_to_element(ele).pause(0.5).click(ele).perform()
    
    # 2、能不用1的鼠标操作的尽量不用,鼠标操作不稳定
    # ele.click()

    *******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/,谢谢!!******* 

  • 相关阅读:
    Elasticsearch调优记录
    Mysql添加索引
    hashCode() 与 equals()
    前端解决因为浮动,父级边框塌陷问题
    ThreadPoolExecutor线程池的maximumPoolSize如何设置
    Java8的流式计算对比普通计算
    npm 安装淘宝镜像
    微信支付分创建支付分订单+签名+验签
    刚更新完版本就炸了:java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream
    Java过滤:一个新集合往老集合中插入,过滤出老集合中没有的元素
  • 原文地址:https://www.cnblogs.com/shouhu/p/12205169.html
Copyright © 2020-2023  润新知