梳理selenium的鼠标方法

你需要有一定的selenium基础

基本用法

  • 包导入

     from selenium.webdriver import ActionChains
  • 调用方式一:链式调用

     ActionChains(driver).动作1.动作2.perform()
  • 调用方式二:分步执行

     myaction = ActionChains(driver)
     myaction.动作1
     myaction.动作2
     myaction.perform()

所有鼠标方法

鼠标方法 参数 说明
click★★ on_element=None 点击
click_and_hold★ on_element=None 点击并按住
context_click★ on_element=None 右键
double_click★ on_element=None 双击
drag_and_drop★★ source, target 拖拽
drag_and_drop_by_offset★ source, xoffset, yoffset 拖拽(依据偏移量)
key_down★ value, element=None 按下某个键
key_up★ value, element=None 抬起某个键
move_by_offset★ xoffset, yoffset 移动(依据偏移量)
move_to_element★★ to_element 移动到元素
move_to_element_with_offset to_element, xoffset, yoffset 移动到元素(依据偏移量)
pause seconds 暂停
perform★★★ 无参数 执行
release★ on_element=None 释放
reset_actions 无参数 重置动作
scroll x: int, y: int, delta_x: int, delta_y: int, duration: int = 0, origin: str = "viewport" 滚动(废弃)
scroll_by_amount delta_x: int, delta_y: int 通过给定的偏差滚动
scroll_from_origin scroll_origin: ScrollOrigin, delta_x: int, delta_y: int 通过给定的原始位置+偏差滚动
scroll_to_element element 滚动到元素
send_keys★ *keys_to_send 发送按键
send_keys_to_element★ element, *keys_to_send 发送按键到元素

实例部分

实例:click、context_click、double_click

  • 体验3个方法的作用

 from selenium.webdriver import ActionChains
 from selenium import webdriver
 driver = webdriver.Chrome()
 driver.get('http://sahitest.com/demo/clicks.htm')
 ele_click = driver.find_element('css selector', "input[value='click me']")
 ele_dblclick = driver.find_element('css selector', "input[value='dbl click me']")
 ele_rightclick = driver.find_element('css selector', "input[value='right click me']")
 ActionChains(driver).click(ele_click).perform()
 ActionChains(driver).double_click(ele_dblclick).perform()
 ActionChains(driver).context_click(ele_rightclick).perform()
  • 双击全选的一个案例

 from selenium.webdriver import ActionChains
 from selenium import webdriver
 driver = webdriver.Chrome()
 driver.get('http://106.14.1.150:8090/forum.php')
 ele_username = driver.find_element('css selector', "#ls_username")
 ele_username.send_keys('admin')
 ActionChains(driver).double_click(ele_username).perform()

实例:drag_and_drop和底层实现click_and_hold和release

 from time import sleep
 from selenium.webdriver import ActionChains
 from selenium import webdriver
 driver = webdriver.Chrome()
 driver.get('http://sahitest.com/demo/dragDropMooTools.htm')
 ele_drag = driver.find_element('css selector', '#dragger')
 ele_items = driver.find_elements('css selector', '.item')
 for ele_item in ele_items:
     ActionChains(driver).drag_and_drop(ele_drag, ele_item).perform()
     sleep(1)
  • 底层实现

 from time import sleep
 from selenium.webdriver import ActionChains
 from selenium import webdriver
 driver = webdriver.Chrome()
 driver.get('http://sahitest.com/demo/dragDropMooTools.htm')
 ele_drag = driver.find_element('css selector', '#dragger')
 ele_items = driver.find_elements('css selector', '.item')
 for ele_item in ele_items:
     myaction = ActionChains(driver)
     myaction.click_and_hold(ele_drag)  # 点击并按住
     myaction.release(ele_item)  # 松开按键
     myaction.perform()
     sleep(1)

实例:move_to_element实现悬停

 from selenium import webdriver
 from selenium.webdriver import ActionChains
 ​
 from time import sleep
 driver = webdriver.Chrome()
 ​
 driver.get('http://106.14.1.150:8090/forum.php')
 # 1. 鼠标移动到快捷导航元素
 ele_navi = driver.find_element('css selector','#qmenu')
 ActionChains(driver).move_to_element(ele_navi).perform()
 ​

实例:move_by_offset实现坐标点击

 from selenium import webdriver
 from selenium.webdriver import ActionChains
 driver = webdriver.Chrome()
 driver.get('http://106.14.1.150:8090/forum.php')
 ele_username = driver.find_element('css selector','#ls_username')
 x= ele_username.location['x']
 y= ele_username.location['y']
 ActionChains(driver).move_by_offset(xoffset=x,yoffset=y).click().perform()

实例:drag_and_drop_by_offset实现滚动条拖动

 from selenium import webdriver
 from time import sleep
 from selenium.webdriver import ActionChains
 driver = webdriver.Chrome()
 driver.maximize_window()
 driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
         "source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""",
    })  #让浏览器感知不到是自动化软件在动作
 driver.get('http://vip.ytesting.com/loginController.do?login')
 ​
 driver.find_element('css selector','#userName').send_keys('松勤VIP账号')
 ​
 driver.find_element('css selector','#password').send_keys('松勤VIP账号的密码')
 ​
 ele_huakuai = driver.find_element('css selector','#nc_1_n1z')
 ​
 ​
 ele_gundongtiao = driver.find_element('css selector','#nc_1__scale_text')
 ​
 distance = ele_gundongtiao.rect['width'] - ele_huakuai.rect['width']
 ​
 ​
 ActionChains(driver).drag_and_drop_by_offset(ele_huakuai,xoffset=distance,yoffset=0).perform()
 ​
 sleep(2)
 driver.find_element('css selector','#but_login').click()

实例:send_keys、send_keys_to_element、key_down和key_up

 from selenium import webdriver
 from time import sleep
 from selenium.webdriver import ActionChains
 driver = webdriver.Chrome()
 driver.get('http://106.14.1.150:8090/forum.php')
 ele_username = driver.find_element('id','ls_username')
 ActionChains(driver).send_keys_to_element(ele_username,'ad').perform()
 ActionChains(driver).click(ele_username).send_keys('mi').perform()
 ActionChains(driver).click(ele_username).key_down('n').key_up('n').perform()
 

梳理selenium的鼠标方法的更多相关文章

  1. Java&Selenium 模拟鼠标方法封装

    Java&Selenium 模拟鼠标方法封装 package util; import org.openqa.selenium.By; import org.openqa.selenium.W ...

  2. selenium + python(鼠标操作)

    关于最近学习selenium自动化测试鼠标操作的一些总结 常见的鼠标操作

  3. Java&Selenium智能等待方法封装

    Java&Selenium智能等待方法封装 ExpectedConditions方法还有很多,自然也可以继续扩展很多 package util; import org.openqa.selen ...

  4. Java&Selenium 模拟键盘方法封装

    Java&Selenium 模拟键盘方法封装 package util; import java.awt.AWTException; import java.awt.Robot; import ...

  5. Java&Selenium控制滚动条方法封装

    Java&Selenium控制滚动条方法封装 package util; import org.openqa.selenium.JavascriptExecutor; import org.o ...

  6. selenium的定位方法-单元素定位

    selenium自动化测试中,提供了单个元素定位方法,多个元素定位方法,2种方式都是根据元素属性:ID.NAME.CLASS_NAME.TAG_NAME.CSS_SELECTOR.XPATH.LINK ...

  7. selenium+python 移动鼠标方法

    from selenium import webdriver from selenium.webdriver.common.keys import Keys import time driver=we ...

  8. python selenium常用基本方法---H5和键盘鼠标操作

    一.模拟手机打开页面(H5测试) from selenium import webdriver mobile_emulation = {'deviceName':'iPhone X'} options ...

  9. Python+Selenium学习--鼠标事件

    场景 前景讲解了鼠标的click()事件,而我们在实际的web产品测试中,有关鼠标的操作,不仅仅只有单击,有时候还包括右击,双击,拖动等操作,这些操作包含在ActionChains类中. Action ...

  10. selenium模拟鼠标操作

    Selenium提供了一个类ActionChains来处理模拟鼠标事件,如单击.双击.拖动等. 基本语法: class ActionChains(object): """ ...

随机推荐

  1. C# 获取打开的EXCEL中某列的行数

    背景 在通过C#操作EXCEL时 获取行数 int iRowCount = worksheet.get_Range("A65535", oMissing).get_End(MExc ...

  2. Oracle性能优化之内存管理

    Oracle实例中的内存使用分为两类:程序全局区(program global area, PGA)和系统全局区(system global area, SGA).前者专门供每个会话使用,后者由所有O ...

  3. Latex数学公式学习

    要想博客写的更详细,更好,那么具体详细的数学推导这一部分是少不了的,不仅要好看还要方便输入那些更为复杂的符号,因此学习Latex就是必不可少的啦,说不定过几天就要用嘞! 本篇文章参考自超详细 LaTe ...

  4. 领域驱动设计(DDD)在美团点评业务系统的实践

    前言 至少 30 年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans 将其定义为领域驱动设计(Domain-Driven Design,简称 DDD).在 ...

  5. 关于model,modelsmanager,db以及phql之间关系的梳理

    摘要: model在前,db在model后面作为驱动支持.phql是phalcon自创的查询语言,主要特性是在sql语句中用模型名替代表名,其聪明地解析模型类,包括关联关系等,还支持参数绑定.mode ...

  6. Spring Boot+Mybatis:实现数据库登录注册与两种properties配置参数读取

    〇.参考资料 1.hutool介绍 https://blog.csdn.net/abst122/article/details/124091375 2.Spring Boot+Mybatis实现登录注 ...

  7. 2A锂电池充电管理IC,具有恒压/恒流充电模式

    PW4052 是一颗适用于单节锂电池的.具有恒压/恒流充电模式的充电管理 IC.该芯片采用开关型的工作模 式, 能够为单节锂电池提供快速. 高效且简单的充电管理解决方案. PW4052 采用三段式充电 ...

  8. 简单的Dos命令学习

    Dos命令学习 打开CMD的方式 从菜单栏打开,windows系统里 win+R 输入cmd 在任意文件夹下,按住shift+右键,点击打开PowerShell 在资源管理器的地址栏前面加上cmd+空 ...

  9. Python怎么引入不同的库?

    怎么引入不同的库? 在线安装库 1)pip install 模块名 2)国内源: 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirr ...

  10. jmeter 之性能分布式压测

    背景: 当并发量达到一定数量时,单台测试设备不足以支撑,甚至会出现内存溢出等情况,解决这个问题就可用分布式测试,使用多台测试设备来达到更大的用户并发数. 原理: 1.一台设备作为调度机(master) ...