梳理selenium的鼠标方法

本文详细介绍了Selenium库中ActionChains模块的使用,包括链式调用和分步执行方法,以及各种鼠标操作(如click、context_click、double_click等)、拖放、键盘输入等实例。通过实例展示了如何应用这些功能进行网页操作。
摘要由CSDN通过智能技术生成

你需要有一定的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_offsetto_element, xoffset, yoffset移动到元素(依据偏移量)
pauseseconds暂停
perform★★★无参数执行
release★on_element=None释放
reset_actions无参数重置动作
scrollx: int, y: int, delta_x: int, delta_y: int, duration: int = 0, origin: str = “viewport”滚动(废弃)
scroll_by_amountdelta_x: int, delta_y: int通过给定的偏差滚动
scroll_from_originscroll_origin: ScrollOrigin, delta_x: int, delta_y: int通过给定的原始位置+偏差滚动
scroll_to_elementelement滚动到元素
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()
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wuxianfeng023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值