• Web自动化测试进阶 —— Selenium模拟鼠标操作


    鼠标操作事件

    在实际的web产品测试中,对于鼠标的操作,不单单只有click(),有时候还要用到右击、双击、拖动等操作,这些操作包含在ActionChains类中。

    ActionChains类中鼠标操作常用方法:

    首先导入ActionChains类: from selenium.webdriver.common.action_chains import ActionChains

    context_click():右击
    double_click():双击
    drag_and_drop():拖动
    move_to_element():鼠标移动到一个元素上
    click_and_hold():按下鼠标左键在一个元素上(长按)

    常用的链条命令

    pause():停留、click():点击、release():释放、perform():执行

    ActionChains(driver).move_to_element(元素对象).pause(秒).click(元素对象).release(元素对象).perform()

    代码如下:

    1. import os
    2. from selenium import webdriver
    3. from selenium.webdriver.common.by import By
    4. from selenium.webdriver.common.action_chains import ActionChains
    5. current_path = os.path.dirname(os.path.abspath(__file__)) # 当前路径
    6. driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路径
    7. driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等
    8. driver.get('https://www.baidu.com/') # 打开网站
    9. # 右击操作 context_click()
    10. element_obj = driver.find_element(By.XPATH,'//input[@id="su"]') # 右击百度一下
    11. mouse_obj = ActionChains(driver)
    12. mouse_obj.context_click(element_obj).perform() # perform执行操作
    13. # 点击操作 click()
    14. element_obj = driver.find_element(By.XPATH,'//a[text()="hao123"]')
    15. mouse_obj = ActionChains(driver)
    16. mouse_obj.click(element_obj).release(element_obj).perform() # 点击hao123
    17. # 长按操作 click_and_hold()
    18. element_obj = driver.find_element(By.XPATH,'//a[text()="hao123"]')
    19. mouse_obj = ActionChains(driver)
    20. mouse_obj.click_and_hold(element_obj).pause(10).release(element_obj).perform() #长按 hao123 10秒后松开
    21. # 鼠标移动到一个元素 move_to_element()
    22. e1 = driver.find_element(By.XPATH,'//a[@name="tj_briicon"]')
    23. e2 = driver.find_element(By.XPATH,'//a[@name="tj_zhidao"]')
    24. mouse_obj = ActionChains(driver)
    25. mouse_obj.move_to_element(e1).pause(3).click(e2).release(e2).perform() # 链条命令 移动到 更多 元素上停顿3秒,然后点击 知道 元素
    1. 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
    2. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
    3. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
    4. 分享他们的经验,还会分享很多直播讲座和技术沙龙
    5. 可以免费学习!划重点!开源的!!!
    6. qq群号:110685036

    键盘操作事件

    在实际的web测试工作中,需要配合键盘按键来操作,webdriver的keys()类提供键盘上所有按键的操作,还可以模拟组合键Ctrl_a,Ctrl+c/v等。

    前置条件:导入Keys类

    from selenium.webdriver.common.keys import Keys

    页面上的键盘操作(从搜索框中按两下tab键)

    driver.find_element(By.XPATH,'//input[@id="kw"]').click()
    ActionChains(driver).send_keys(Keys.TAB).pause(1).send_keys(Keys.TAB).perform()

    组合键操作 ctrl+a、ctrl+c、ctrl+v

    driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys('python')
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()

    备注:

    1、在使用修饰键的时候需要key_down()和key_up()方法

      修饰键包含ctrl、alt、shift

    2、类似alt+F4 ctrl+alt+delete不能使用,这里的组合键只针对网页生效的

    代码如下:

    1. import os
    2. from selenium import webdriver
    3. from selenium.webdriver.common.by import By
    4. from selenium.webdriver.common.action_chains import ActionChains
    5. from selenium.webdriver.common.keys import Keys
    6. current_path = os.path.dirname(os.path.abspath(__file__)) # 当前路径
    7. driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路径
    8. driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等
    9. driver.get('https://www.baidu.com/') # 打开网站
    10. # 页面上的键盘操作 从搜索框中按两下tab键
    11. driver.find_element(By.XPATH,'//input[@id="kw"]').click()
    12. ActionChains(driver).send_keys(Keys.TAB).pause(1).send_keys(Keys.TAB).perform()
    13. # 组合键操作 ctrl+a、ctrl+c、ctrl+v、shift+a
    14. # 修饰键 ctrl、alt、shift
    15. # ctrl+a ==> 按下ctrl、按下a、松开a、松开ctrl
    16. driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys('python')
    17. ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
    18. # 备注:系统级别的组合键不能使用,因为这里的组合键都是只针对网页生效的

    end今天的分享就到此结束了!!! 

  • 相关阅读:
    C语言中的操作符(万字详解)
    Stable Diffusion 3 真正来了
    C#/C++ 通过ODBC连接OceanBase Oracle租户
    虚拟化设备-Virtio介绍
    阿里云通过音视频url获取字幕内容
    Java基础:简单工厂模式、工厂方法模式和抽象工厂模式综合概述
    阿里云环境下,从仅知的一个外网域名如何找出前端程序的部署所在和启动命令
    【Python黑科技】获取每日一句美句,并定时发送邮件到指定邮箱(保姆级图文+实现代码)
    软考网络工程师学习笔记——操作系统(Day3)
    软件考试:计算机组成原理: 指令&数据
  • 原文地址:https://blog.csdn.net/qq_43371695/article/details/134083305