• selenium 鼠标操作(ActionChains)


    web自动化中,有一些地方需要用到鼠标操作,比如拖动,鼠标悬停,右击等操作,那么selenium如何操作这些方法呢?在写appium的时候也经常使用这个,其实这两个方法是相似的,appium中TouchAction,那么selenium中是什么呢?

    ActionChains

    ActionChains表示selenium的鼠标操作的库,使用前一定要进行导入库 from selenium.webdriver.common.action_chains import ActionChains 

    ActionChains中支持,右击,双击,悬停,以及拖放等操作。

    具体的操作内容,我们可以查看ActionChains源代码进行查看(按住ctrl点击ActionChains)

    操作方法: 

    ActionChains(driver).XXXXX.perform() 

    其中xxxx表示一些鼠标操作的方法,然后perform进行执行所有ActionChains存储的操作内容。

    1、鼠标右击

    方法: context_click() 模拟鼠标右击操作

    通过百度搜索框进行右击查看内容

    复制代码
    # coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import  ActionChains
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    element = driver.find_element_by_id('kw')
    time.sleep(1)
    # 通过perform执行ActionChains中存储的操作
    ActionChains(driver).context_click(element).perform()
    复制代码

    鼠标双击

    方法: double_click() 用来模拟鼠标的双击操作

    通过进入百度首页,双击页面右上角的设置后,设置两个字由白底色变为蓝底色

    复制代码
    # coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import  ActionChains
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    element = driver.find_element_by_id('s-usersetting-top')
    time.sleep(1) # 鼠标双击 
    ActionChains(driver).double_click(element).perform()
    复制代码

    鼠标悬停

    web页面上存在一些鼠标放上去就会显示一些内容,这个时候就可以用到鼠标悬停操作了

    方法: move_to_element() 

    通过进入百度首页,进行对设置元素进行悬停操作

    复制代码
    # coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import  ActionChains
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    element = driver.find_element_by_id('s-usersetting-top')
    time.sleep(1)
    # 鼠标悬停
    ActionChains(driver).move_to_element(element).perform()
    复制代码

    鼠标拖放

    通过鼠标在一个元素位置拖到另一个元素位置。

    方法: drag_and_drop() 

    通过进入百度首页,拖拽右上角的文字“设置”到左边的文字“网盘”后,可以看到“网盘”、“更多”、“设置”,都变为了蓝底色

    复制代码
    # coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import  ActionChains
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    element = driver.find_element_by_id('s-usersetting-top')
    time.sleep(1)
    e2 = driver.find_element_by_xpath('//*[text()="网盘"]') # 鼠标拖动,这里需要填写2个元素位置,第一个为需要移动的,第2个位移动到元素 
    ActionChains(driver).drag_and_drop(element,e2).perform()
    复制代码

    其他操作

    看到这里了,会发现,其实使用方法都是一样的,只是一些操作方法名不同,就不一一进行写了。

    方法 说明
    click_and_hold() 单机鼠标左键不放
    move_to_element_with_offset() 移动到特定位置(坐标,浏览器左上角开始)

    release()

     释放鼠标

    参考链接:

    https://www.cnblogs.com/qican/p/13525095.html

  • 相关阅读:
    navicat 创建查询失败 can not create file
    使用Themeleaf时, HTML内嵌的JS代码需要注意< 和 >的问题
    window下查杀占用端口的进程
    Spring MVC的Rest URL 被错误解析成jsp, 导致404错误(XML方式下@Controller和@RestController需要配置<mvc:annotation-driving/>)
    一个本地DNS解析和mysql授权导致的Mysq连接失败问题(Access denied for user 'loan'@'kfcsdb1' (using password: YES))
    taglib报错The content of element type "taglib" must match "(tlib-version,...)
    cvc-complex-type.2.4.a: Invalid content was found starting with element 'display-name'
    在eclipse中运行spring web application时的异常: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    Spring3升级到Spring4时, 运行时出现找不到MappingJacksonHttpMessageConverter的情况
    如何在Spring MVC Test中避免”Circular view path” 异常
  • 原文地址:https://www.cnblogs.com/superbaby11/p/15750440.html
Copyright © 2020-2023  润新知