zoukankan      html  css  js  c++  java
  • python selenium --鼠标事件

    转自:http://www.cnblogs.com/fnng/p/3288444.html

    本节重点:

    ActionChains 类

    •   context_click()  右击
    •   double_click()   双击
    •   drag_and_drop()  拖动

     

    测试的产品中有一个操作是右键点击文件列表会弹出一个快捷菜单,可以方便的选择快捷菜单中的选择对文件进行操作(删除、移动、重命名),之前学习元素的点击非常简单:

    driver.find_element_by_id(“xxx”).click()

    那么鼠标的双击、右击、拖动等是否也是这样的写法呢?例如右击:

    driver.find_element_by_id(“xxx”).context_click()

    经过运行脚本得到了下面的错误提示:

    AttributeError: 'WebElement' object has no attribute 'context_click' 

    提示右点方法不属于webelement 对象,通过查找文档,发现属于ActionChains 类,但文档中没有具体写法。这里要感谢 北京-QC-rabbit 的指点,其实整个python+selenium 学习过程都要感谢 北京-QC-rabbit 的指点。

     

     

    下面介绍鼠标右键的用法,以快播私有云为例:

    复制代码
    #coding=utf-8
    
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    
    driver = webdriver.Firefox()
    driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud.kuaibo.com%2F")
    
    #登陆快播私有云
    driver.find_element_by_id("user_name").send_keys("username")
    driver.find_element_by_id("user_pwd").send_keys("123456")
    driver.find_element_by_id("dl_an_submit").click()
    time.sleep(3)
    
    #定位到要右击的元素
    qqq =driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table/tbody/tr/td[2]")
    #对定位到的元素执行鼠标右键操作
    ActionChains(driver).context_click(qqq).perform()
    
    
    '''
    #你也可以使用三行的写法,但我觉得上面两行写法更容易理解
    chain = ActionChains(driver)
    implement = driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table/tbody/tr/td[2]")
    chain.context_click(implement).perform()
    '''
    
    time.sleep(3) #休眠3秒
    driver.close()
    复制代码

    这里需要注意的是,在使用ActionChains 类之前,要先将包引入。

     

     

    右击的操作会了,下面的其它方法比葫芦画瓢也能写出来。

    鼠标双击的写法:

    #定位到要双击的元素
    qqq =driver.find_element_by_xpath("xxx")
    #对定位到的元素执行鼠标双击操作
    ActionChains(driver).double_click(qqq).perform()

     

     

    鼠标拖放操作的写法:

    复制代码
    #定位元素的原位置
    element = driver.find_element_by_name("source")
    #定位元素要移动到的目标位置
    target =  driver.find_element_by_name("target")
    
    #执行元素的移动操作
    ActionChains(driver).drag_and_drop(element, target).perform()
    复制代码

     

    ActionChains 类不仅仅是只包含了上面的三个方法,下面将方法列出:

    class ActionChains(driver)

    driver:The WebDriver instance which performs user actions.

    Generate user actions. All actions are stored in the ActionChains object. Call perform() to fire stored actions.

     

      – perform()

    Performs all stored actions.

     

      – click(on_element=None)

    Clicks an element.

    on_element:The element to click. If None, clicks on current mouse position.

     

      – click_and_hold(on_element)

    Holds down the left mouse button on an element.

    on_element:The element to mouse down. If None, clicks on current mouse position.

     

      – context_click(on_element)

    Performs a context-click (right click) on an element.

    on_element:The element to context-click. If None, clicks on current mouse position.

     

      – double_click(on_element)

    Double-clicks an element.

    on_element:The element to double-click. If None, clicks on current mouse position.

      

      – drag_and_drop(source, target)

    Holds down the left mouse button on the source element, then moves to the target element and releases the mouse button.

    source:The element to mouse down.

    target: The element to mouse up.

     

      – key_down(key, element=None)

    Sends a key press only, without releasing it. Should only be used with modifier keys (Control, Alt andShift).

    key:The modifier key to send. Values are defined in Keys class.

    element:The element to send keys. If None, sends a key to current focused element.

      – key_up(key, element=None)

    Releases a modifier key.

    key:The modifier key to send. Values are defined in Keys class.

    element:The element to send keys. If None, sends a key to current focused element.

     

      – move_by_offset(xoffset, yoffset)

    Moving the mouse to an offset from current mouse position.

    xoffset:X offset to move to.yoffset:Y offset to move to.

     

      – move_to_element(to_element)

    Moving the mouse to the middle of an element.

    to_element: The element to move to.

     

      – move_to_element_with_offset(to_element, xoffset, yoffset)

    Move the mouse by an offset of the specificed element. Offsets are relative to the top-left corner of the

    element.

    to_element: The element to move to.xoffset:X offset to move to.yoffset:Y offset to move to.

     

      – release(on_element)

    Releasing a held mouse button.

    on_element:The element to mouse up.

     

      – send_keys(*keys_to_send)

    Sends keys to current focused element.

    keys_to_send:The keys to send.

     

      – send_keys_to_element(self, element,*keys_to_send):

    Sends keys to an element.

    element:The element to send keys.keys_to_send:The keys to send.

     

  • 相关阅读:
    【HDOJ】2774 Shuffle
    【POJ】2170 Lattice Animals
    【POJ】1084 Square Destroyer
    【POJ】3523 The Morning after Halloween
    【POJ】3134 Power Calculus
    【Latex】如何在Latex中插入伪代码 —— clrscode3e
    【HDOJ】4801 Pocket Cube 的几种解法和优化
    【HDOJ】4080 Stammering Aliens
    【HDOJ】1800 Flying to the Mars
    SQL语法
  • 原文地址:https://www.cnblogs.com/saryli/p/5182740.html
Copyright © 2011-2022 走看看