zoukankan      html  css  js  c++  java
  • selenium3 + python

    ActionChains简介

    actionchains是selenium里面专门处理鼠标相关的操作如:鼠标移动,鼠标按钮操作,按键和上下文菜单(鼠标右键)交互。
    这对于做更复杂的动作非常有用,比如悬停和拖放。

    actionchains也可以和快捷键结合起来使用,如ctrl,shif,alt结合鼠标一起使用

    当你使用actionchains对象方法,行为事件是存储在actionchains对象队列。当你使用perform(),事件按顺序执行。

    • 方法一:可以写一长串
      • menu = driver.find_element_by_css_selector(".nav")
      • hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
      • ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
    • 方法二:可以分几步写

        menu = driver.find_element_by_css_selector(".nav")

        hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")

        actions = ActionChains(driver)

        actions.move_to_element(menu)

        actions.click(hidden_submenu) actions.perform()

    方法介绍 

    1.以下提到的Keys类,是selenium里面的键盘事件类,导入方法:

    from selenium.webdriver.common.keys import Keys

    2.鼠标事件使用导入方法:

    from selenium.webdriver.common.action_chains import ActionChains

    class ActionChains(object):
    def __init__(self, driver):
    self._driver = driver
    self._actions = []

    def perform(self):

    # 执行行为事件

    def click(self, on_element=None):
    点击:
    - 如果参数不写,那么点击的是当前鼠标位置
    - 如果参数写定位到的元素对象element,那就是点这个元素

    def click_and_hold(self, on_element=None):
    鼠标左键按住某个元素
    - 如果参数不写,那么点的是当前鼠标位置
    - 如果参数写定位到的元素对象element,那就是点这个元素

    def context_click(self, on_element=None):
    鼠标右键点击
    - 如果参数不写,那么点的是当前鼠标位置
    - 如果参数写定位到的元素对象element,那就是点这个元素

    def double_click(self, on_element=None):
    双击鼠标
    - 如果参数不写,那么点的是当前鼠标位置
    - 如果参数写定位到的元素对象element,那就是点这个元素

    def drag_and_drop(self, source, target):
    按住源元素上的鼠标左键,然后移动到目标元素并释放鼠标按钮
    - source: 按住鼠标的元素位置
    - target: 松开鼠标的元素位置

    def drag_and_drop_by_offset(self, source, xoffset, yoffset):
    按住源元素上的鼠标左键,然后移动到目标偏移量并释放鼠标按钮。
    - source: 按住鼠标的元素位置
    - xoffset: X
    轴的偏移量
    - yoffset: Y
    轴的偏移量

    def key_down(self, value, element=None):
    只发送一个按键,而不释放它。只应用于修饰键(控制、alt和shift)。

    - value: 要发送的修饰符键。值在“Keys”类中定义。
    - element: 定位的元素
    如果element参数不写就是当前鼠标的位置

    举个例子,按住
    ctrl + c::

    ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()

    def key_up(self, value, element=None):

    # 释放按键,配合上面的一起使用

    def move_by_offset(self, xoffset, yoffset):
    将鼠标移动到当前鼠标位置的偏移量

    - xoffset: X轴
    作为一个正整数或负整数移动到x偏移量
    - yoffset: Y轴
    偏移,作为正整数或负整数。

    def move_to_element(self, to_element):
    鼠标悬停
    - to_element: 定位需要悬停的元素

    def move_to_element_with_offset(self, to_element, xoffset, yoffset):
    通过指定元素的偏移量移动鼠标。偏移量与元素的左上角相对
    - to_element: 定位需要悬停的元素
    - xoffset: X
    轴偏移量
    - yoffset: Y
    轴偏移量

    def release(self, on_element=None):
    释放一个元素上的鼠标按钮。

    - 如果参数不写,那么是当前鼠标位置
    - 如果参数写定位到的元素对象element,那就是这个元素.

    def send_keys(self, *keys_to_send):
    发送到当前焦点元素
    要发送的按键。修饰符键常数可以在“Keys”类。

    def send_keys_to_element(self, element, *keys_to_send):
    发送到定位到的元素上
    - element: 定位的元素
    - keys_to_send: 要发送的按键。修饰符键常数可以在“Keys”类。

    1.实现Ctrl +F5 的组合键功能

    from selenium import webdriver

    from selenium.webdriver.common.action_chains import ActionChains

    from selenium.webdriver.common.keys import Keys

    import time driver = webdriver.Chrome()

    driver.get("https://www.baidu.com")

    time.sleep(3) # 实现Ctrl+F5刷新

    ActionChains(driver).key_down(Keys.CONTROL).send_keys(Keys.F5).key_up(Keys.CONTROL).perform()

    
    
    

    转载:https://www.cnblogs.com/yoyoketang/p/8711367.html

  • 相关阅读:
    Qt 错误汇集贴
    转:Qt编写串口通信程序全程图文讲解
    转:QT 的点点滴滴 错误总结
    转:Qt项目中遇到的一些小问题汇总
    转:AM335X 启动流程
    基于Xilinx Zynq的计算处理平台
    基于英伟达Jetson TX1的GPU处理平台
    基于6U VPX的 SRIO 接口, 和PCIe 接口的msata 固态存储卡
    国芯网 邀请国产芯片原厂入驻商城
    295-Xilinx Kintex-7 X7K325T的半高PCIe x4双路万兆光纤收发卡
  • 原文地址:https://www.cnblogs.com/Teachertao/p/11025568.html
Copyright © 2011-2022 走看看