Python实战解析selenium的基本元素与键盘鼠标模拟事件

本篇文章给大家带来了关于python的相关知识,其中主要介绍了关于selenium的基本元素与键盘鼠标模拟事件的相关问题,包括了利用 Keys 模块模拟键盘操作事件、用 Actio...

本篇文章给大家带来了关于python的相关知识,其中主要介绍了关于selenium的基本元素与键盘鼠标模拟事件的相关问题,包括了利用 Keys 模块模拟键盘操作事件、用 Action 类模拟鼠标操作事件等,下面一起来看一下,希望对大家有帮助。

Python实战解析selenium的基本元素与键盘鼠标模拟事件插图1

当我们定位到具体的一个元素的时候就可以对这个元素进行具体的操作,比如之前章节所执行的click操作。这是最简单的操作,webdriver还有其他的操作。比如元素的基本操作(点击、输入、清除),还有一些高级操作如鼠标键盘模拟事件、弹出框处理、多页面切换等… 这些都是需要我们了解的内容,也是在做自动化测试的时候经常遇到的一些基本场景。今天这一章节,我们就先来学习一下元素的基本操作与鼠标键盘模拟事件的操作吧。

元素的基本操作

利用我们之前使用的本地form.html文件,练习一下元素的基本点击、输入、清除操作。

代码示例如下:

#coding:utf-8fromtimeimportsleepfromseleniumimportwebdriverdriver=webdriver.Chrome()#启动Chrome浏览器的driverdriver.maximize_window()#Chrome浏览器最大化driver.get('file:///Users/workspace/WEB_TEST_HTML/form.html')#打开本地的"form.html"文件sleep(1)email_element=driver.find_element_by_xpath('//*[@id="inputEmail"]')#通过xpath定位Email输入框。email_element.send_keys('username')#Email输入框输入"username"sleep(1)email_element.clear()#清除Email输入框内容sleep(1)email_element.send_keys('admin')#Email输入框输入"admin"driver.find_element_by_xpath('//*[@id="inputPassword"]').send_keys('123456')#Password输入框输入"123456"sleep(1)driver.find_element_by_xpath('/html/body/form/div[3]/div/button').click()#通过xpath定位"Signin"按钮并点击driver.quit()

运行结果如下:

Python实战解析selenium的基本元素与键盘鼠标模拟事件插图3

以上就是属于元素的基本操作,其实就是最简单最基本的操作,接下来我们继续看看高一点难度的操作 ---> 鼠标键盘模拟事件操作。

鼠标键盘模拟事件操作

利用我们本地的sendkeys.html文件,实现鼠标键盘的模拟事件操作。sendkeys.html文件的页面元素如下图:

Python实战解析selenium的基本元素与键盘鼠标模拟事件插图5

利用 Keys 模块模拟键盘操作事件

ps:使用 Keys 模块需要执行导入操作: "from selenium.webdriver.common.keys import Keys"

键盘模拟事件代码示例如下:

#coding:utf-8fromtimeimportsleepfromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeysdriver=webdriver.Chrome()#启动Chrome浏览器的driverdriver.maximize_window()#Chrome浏览器最大化driver.get('file:///Users/workspace/WEB_TEST_HTML/sendkeys.html')#打开本地的"form.html"文件sleep(1)#这里需要注意一下,因为我使用的是Mac,所以键盘ctrl事件是"Keys.COMMAND",如果是Win系统的话,ctrl事件是"Keys.CONTROL"driver.find_element_by_id('A').send_keys((Keys.COMMAND,'a'))#通过id定位"id=A"的元素,执行键盘事件command+adriver.find_element_by_id('A').send_keys((Keys.COMMAND,'x'))#通过id定位"id=A"的元素,执行键盘事件command+xsleep(1)driver.find_element_by_id('B').send_keys((Keys.COMMAND,'v'))#通过id定位"id=B"的元素,执行键盘事件command+vsleep(1)driver.find_element_by_id('B').send_keys((Keys.COMMAND,'a'))#通过id定位"id=B"的元素,执行键盘事件command+asleep(1)driver.find_element_by_id('B').send_keys((Keys.COMMAND,'c'))#通过id定位"id=B"的元素,执行键盘事件command+csleep(1)driver.find_element_by_id('A').send_keys((Keys.COMMAND,'v'))#通过id定位"id=A"的元素,执行键盘事件command+vsleep(1)driver.quit()

运行结果如下:

Python实战解析selenium的基本元素与键盘鼠标模拟事件插图7

利用 Action 类模拟鼠标操作事件

PS:模拟鼠标操作的场景并不是很多,了解即可。同时 Action 类需要执行 "from selenium.webdriver import ActionChains"

先来看一下,Action 类都支持哪些鼠标的常用操作。

key_down:模拟鼠标按键按下

key_up:模拟鼠标按键弹起

click:模拟鼠标按键点击(单击)

context_click:点击鼠标右键

double_click:模拟鼠标按键点击(双击)

send_keys:发送某个键到当前焦点的元素

click_and_hold:点击鼠标左键,不松开(拖拽)

release:释放、松开按住的鼠标按钮

move_to:鼠标移动到…

drag_and_drop:拖拽起来丢掉那里去…

perform:无论做了什么操作,最后都需要perform去提交

PS:实际场景中不会是用很复杂的鼠标操作事件来进行自动化Case的编写,所以我们演示的也是比较简单的场景。

模拟鼠标事件代码示例如下:

#coding:utf-8fromtimeimportsleepfromseleniumimportwebdriverfromselenium.webdriverimportActionChainsdriver=webdriver.Chrome()#启动Chrome浏览器的driverdriver.maximize_window()#Chrome浏览器最大化driver.get('file:///Users/workspace/WEB_TEST_HTML/sendkeys.html')#打开本地的"form.html"文件sleep(1)#这里需要注意一下,因为我使用的是Mac,所以键盘ctrl事件是"Keys.COMMAND",如果是Win系统的话,ctrl事件是"Keys.CONTROL"double_click_element=driver.find_element_by_id('A')#通过id定位"id=A"的元素赋值给double_click_elementActionChains(driver).double_click(double_click_element).context_click(double_click_element).perform()#通过ActionChains类将"driver"转换,先双击、然后执行右击操作【这种串联起来的操作,叫做链式用法,可以根据这个链一直往下写】sleep(2)ActionChains(driver).context_click(double_click_element).perform()#通过ActionChains类将"driver"转换,然后执行右击操作sleep(2)driver.quit()

运行结果如下:

Python实战解析selenium的基本元素与键盘鼠标模拟事件插图9

以上就是使用Action类实现一些特殊场景的模拟,比较常用的就是双击、右击、拖拽等场景使用的略多一些,其他的场景使用Action类就会特别少。

产品猿社区致力收录更多优质的商业产品,给服务商以及软件采购客户提供更多优质的软件产品,帮助开发者变现来实现多方共赢;

日常运营的过程中我们难免会遇到各种版权纠纷等问题,如果您在社区内发现有您的产品未经您授权而被用户提供下载或使用,您可按照我们投诉流程处理,点我投诉

本文来自用户发布投稿,不代表产品猿立场 ;若对此文有疑问或内容有严重错误,可联系平台客服反馈;

部分产品是用户投稿,可能本文没有提供官方下下载地址或教程,若您看到的内容没有下载入口,您可以在我们产品园商城搜索看开发者是否有发布商品;若您是开发者,也诚邀您入驻商城平台发布的产品,地址:点我进入

如若转载,请注明出处:https://www.chanpinyuan.cn/27338.html;
(0)
上一篇 2022年11月23日 下午4:16
下一篇 2022年11月23日 下午4:17

相关推荐

发表回复

登录后才能评论
分享本页
返回顶部