首页 > 其他分享 >selenium:ActionChains类模拟鼠标和键盘操作(6)

selenium:ActionChains类模拟鼠标和键盘操作(6)

时间:2024-10-10 21:52:40浏览次数:8  
标签:webdriver keys 鼠标 ActionChains selenium driver element Keys import

图片

selenium包中提供了ActionChains类,主要用于鼠标和键盘的一些操作,比如鼠标移动,鼠标按键,或者是悬停和拖放等;模拟键盘按键输入,比如按住control+C键等。

使用时先导入该类:

from selenium.webdriver import ActionChains

图片

ActionChains类的方法介绍 

ActionChains类常用方法

函数

功能

move_to_element

鼠标移动到某个元素位置

move_to_element_with_offset

鼠标移动到离某个元素距离多少的位置

move_by_offset

移动鼠标到某个坐标

click

单击鼠标左键

click_and_hold

单击鼠标左键不松开

double_click

双击鼠标左键

context_click

点击鼠标右键

drag_and_drop

拖拽到某个元素然后松开

drag_and_drop_by_offset

拖拽到某个坐标然后松开

key_down

按下某个键盘上的按键;

键盘输入通常用到如下Keys类中的属性

from selenium.webdriver.common.keys import Keys

key_up

松开某个按键

first_selected_option

第一个选择的选项

send_keys

可发送多个键盘上的按键到当前焦点位置,循环的模拟输入按键和松开按键 ; 上面提到的send_keys模拟文本输入,功能有所不同。

send_keys_to_element

发送某个按键到某个元素

pause

暂停执行一段时间

release

在元素上释放按住的鼠标按钮

reset_actions

清除已经储存的上述方法中的动作

perform

执行已经存储的上述方法中的动作。想要执行上述方法,最后需要执行该函数来生效。

方法执行类似如下:移动鼠标到某个定位到的元素,然后右键点击,最后加上perform函数完成整个动作(actchain_ins为ActionChains类初始化的实例对象)。

actchain_ins.move_to_element(driver.find_element(By.ID,'su')).context_click().perform()

示例:打开百度网页,将鼠标定位到‘更多’展示隐藏的内容

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Safari()
# 打开一个网页
driver.get("https://www.baidu.com")
driver.maximize_window()
sleep(2)
#初始化ActionChains类
actchain_ins = webdriver.ActionChains(driver)
#移动到‘更多’元素的位置
actchain_ins.move_to_element(driver.find_element(By.NAME,'tj_briicon')).perform()
actchain_ins.pause(5).perform()

执行后展示如图:

图片

示例:打开百度输入用户名和密码进行登录(表单操作)

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Safari()
# 打开一个网页
driver.get("https://www.baidu.com")
driver.maximize_window()
sleep(1)
#初始化ActionChains类
actchain_ins = webdriver.ActionChains(driver)
#模拟鼠标点击登录按钮
actchain_ins.move_to_element(driver.find_element(By.ID,'s-top-loginbtn')).click().perform()
sleep(1)
#输入用户名
driver.find_element(By.ID,'TANGRAM__PSP_11__userName').send_keys('*******')
sleep(1)
#输入密码
driver.find_element(By.ID,'TANGRAM__PSP_11__password').send_keys('*******')
sleep(1)
#模拟鼠标点击‘阅读并接受’前面的选框
actchain_ins.move_to_element(driver.find_element(By.ID,'TANGRAM__PSP_11__isAgree')).click().perform()
sleep(1)
#模拟鼠标点击登录
actchain_ins.move_to_element(driver.find_element(By.ID,'TANGRAM__PSP_11__submit')).click().perform()
sleep(3)

程序执行后会自动输入用户和密码,点击登录,如下图:

图片

示例:打开百度后在百度一下按钮处点击鼠标右键

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Safari()
# 打开一个网页
driver.get("https://www.baidu.com")
driver.maximize_window()
sleep(2)
#ActionChains初始化
actchain_ins = webdriver.ActionChains(driver)
#在百度一下按钮处,点击右键
actchain_ins.move_to_element(driver.find_element(By.ID,'su')).context_click().perform()

图片

示例:打开百度输入要搜索的内容后发送键盘键进行剪切和粘贴

键盘输入使用的是如下Keys类,使用前我们先导入

from selenium.webdriver.common.keys import Keys

Keys类有很多键盘的按键属性:

图片

图片

图片

主要使用方法:通过key_down按下某个按键,通过send_keys发送某个按键,然后key_up松开某个按键。比如下面这个按住苹果电脑上的COMMAND+A键,然后再松开COMMAND键,完成全选动作。

actchain_ins.key_down(Keys.COMAND).send_keys('A').key_up(Keys.COMMAND).perform()

测试代码如下:输入搜索内容后,全选文本后,剪切然后再粘贴。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from time import sleep
driver = webdriver.Safari()
# 打开一个网页
driver.get("https://www.baidu.com")
driver.maximize_window()
sleep(2)
#初始化
actchain_ins = webdriver.ActionChains(driver)
driver.find_element(By.ID,'kw').send_keys('python')
#control+A复制 苹果电脑是COMMAND键
actchain_ins.key_down(Keys.COMMAND).send_keys('A').key_up(Keys.COMMAND).perform()
sleep(1)
#control+X剪切
actchain_ins.key_down(Keys.COMMAND).send_keys('X').key_up(Keys.COMMAND).perform()
sleep(1)
#control+V粘贴
actchain_ins.key_down(Keys.COMMAND).send_keys('V').key_up(Keys.COMMAND).perform()
sleep(20)

执行后,录制的视频如下:

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="mst7U5th-1728568635922" src="https://live.csdn.net/v/embed/428711"></iframe>

剪切粘贴

示例:使用ActionChains 类模拟鼠标滚轮操作

使用函数ActionChains.send_keys发送按键Keys.PAGE_DOWN往下滑动页面,发送按键Keys.PAGE_UP往上滑动页面。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Safari()
# 打开一个网页
driver.get("https://www.toutiao.com/")
driver.maximize_window()
sleep(6)
actions = webdriver.ActionChains(driver)
# 向下翻页
actions.send_keys(Keys.PAGE_DOWN).perform()
# 向上翻页
actions.send_keys(Keys.PAGE_UP).perform()

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

标签:webdriver,keys,鼠标,ActionChains,selenium,driver,element,Keys,import
From: https://blog.csdn.net/kymppcds/article/details/142832760

相关文章

  • javascript学习——鼠标事件详解
    鼠标事件鼠标事件的种类鼠标事件主要有下面这些,所有事件都继承了MouseEvent接口(详见后文)。(1)点击事件鼠标点击相关的有四个事件。click:按下鼠标(通常是按下主按钮)时触发。dblclick:在同一个元素上双击鼠标时触发。mousedown:按下鼠标键时触发。mouseup:释放按下的鼠标键时触......
  • USB 鼠标的实现
    目录前言5USB标准请求5.1USB标准设备请求的结构5.2GET_DESCRIPTOR请求5.3SET_ADDRESS请求5.4SET_CONFIGURATION请求6设备描述符的实现9配置描述符集合的结构9.1配置描述符结构9.2接口描述符的结构9.3端点描述符的结构9.4HID描述符的结构9.5[示例:描述符]11字符......
  • 高效Selenium测试技巧:轻松控制已开启的浏览器
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途一、前言在日常做Selenium测试的时候,总是遇到网页需要登录的情况,上次我们在做Selenium专题的时候,有讲过一个自动刷B站的案例,里面涉及到了登录的情况,详细推文点击......
  • 达尔优A980,一款诚意满满的鼠标
    首先说说这个鼠标的参数,3395芯片和150赫兹的处理器,性能方面足够用。这鼠标最大的亮点就是左侧有一块小屏幕,看网上的评论都说鼠标不要这个屏幕的好,谁会一直盯着屏幕看?但是对于我而言,这个屏幕最大的作用就是可以脱离电脑驱动,直接在鼠标设置回报率dpi,灯光颜色以及效果都可以通过鼠标......
  • 自动化测试 | 安装selenium教程以及(ERROR: pip‘s dependency resolver does not cur
    1.在cmd里面安装selenium输入:pipinstallselenium在我这里出现了下载缓慢的问题,一直卡了半天,有同样问题的小伙伴可以试试输入下面这个进行安装,会更快一点:pip--default-timeout=100installselenium-ihttps://pypi.tuna.tsinghua.edu.cn/simple之后仍然出现了:ERRO......
  • 【Web自动化测试】Python + Selenium实现携程网火车票订购的自动化测试——PO模式篇
    目录1.PO模式2.目录结构3.代码(1).base层——`base.py`(2).common层——`function.py`(3).data层——`data.yaml`(4).po层——`login_page.py`(5).po层——`search_trains_page.py`(6).po层——`filter_tickets_page.py`(7).po层——`order_page.py`(8).testcase层——`test_b......
  • 网络爬虫自动化Selenium元素获取
    网络爬虫技术是自动化处理网页数据的重要工具,而Selenium则是一种常用的浏览器自动化框架,能够模拟用户行为来获取网页中的数据。为了有效地利用Selenium进行网络爬虫,必须掌握各种元素的获取方法。选择合适的元素定位器是成功操作网页的关键之一。本文将深入介绍几种常用的Se......
  • GUI的绘图功能、鼠标作为画笔、作为调色板的跟踪栏
    用OpenCV画不同的几何图形主要函数:cv.line(),**cv.circle() , cv.rectangle(), cv.ellipse(), cv.putText()  Code1上面的这些函数,我们能看到一些相同的参数:23img:要画的图片45color:形状的颜色,如BGR,它是一个元组,例如:蓝色(255,0,0)。对于灰度图,只需传一......
  • three.js 鼠标点击获取模型对象
    three.js 创建模型后,想要实现点击模型获取模型对象触发相应事件。可以使用它提供的APITHREE.Raycaster()https://threejs.org/docs/index.html?q=Raycaster#api/en/core/Raycaster//监听点击事件window.addEventListener('click',(event)=>{event.preventDefault......
  • 学习Openmv的第四天——鼠标绘图
    1、简单演示在这里,我们创建一个简单的应用程序,无论我们在哪里双击它,都可以在图像上绘制一个圆。首先,我们创建一个鼠标回调函数,该函数在发生鼠标事件时执行。鼠标事件可以是与鼠标相关的任何事物,例如左键按下,左键按下,左键双击等。它为我们提供了每个鼠标事件的坐标(x,y)。通......