我们知道,在使用Python进行自动化处理过程中,常常需要跟鼠标打交道,如页面要求鼠标单击、悬停等动作,这时候我们怎么通过selenium提供的驱动来识别并处理鼠标事件呢?这就是我们今天来探讨和梳理的内容。
selenium模拟鼠标处理事件
我们先来看下自动化测试中为什么要模拟鼠标操作。
【基础知识】
随着Web前端技术的发展,前端开发人员利用H5、JavaScript、AJAX等技术,使得我们看到的网页也越来越华丽、交互性也越来越强大,网页与用户交互方式也越来越多。这对于用户来说可能是好事,但是对于Web测试人员来说,网页提供的这些交互模式使得测试更加复杂。
如何能够利用selenium提供的驱动来让浏览器自行模拟鼠标事件,比如单击、右击、悬停、拖动等操作。selenium提供了哪些接口函数呢?
浏览器模拟处理鼠标事件的接口类是selenium.webdriver.common.action_chains中的ActionChains类,看着是不是很复杂,其实使用起来一点都不难,大家往下看。
下面内容是重点哦
我们来看下本文的重点内容。
【ActionChains方法探讨】
正确使用ActionChains类的方法是这样的
ActionChains(driver).double_click(element).perform()
就这样一句就可以让浏览器模拟鼠标进行操作,下面我们对参数进行讲解如下:
driver:将浏览器驱动作为参数传递给ActionChains类
double_click:需要鼠标模拟的动作,常见的动作有以下几个
perform(element):执行所有 ActionChains 中存储的行为
---context_click(element)鼠标右击
---double_click(element)鼠标双击
---drag_and_drop(element)拖动鼠标
---move_to_element(element)鼠标悬停
这几个动作名字很好记,直接作为ActionChains的方法调用即可。至于这些方法中传入的参数element很好理解,就是我们要执行鼠标动作的元素,它是我们使用webdriver.find_element_by_XXX()中找到的元素。这里就不再做讲解了。
要注意传入参数的次序
讲到这里,鼠标操作其实还没开始执行,我们必须使用perform()方法提交给驱动执行才能算完成了鼠标事件。
【举例说明】
我们知道,大部分企业网站的导航条都是这种鼠标悬停到某一个导航元素中时,展开相应的目录信息,我们以国内比较出名的一个智能语音服务提供商主页为例来看一下这个例子。
测试模拟鼠标悬停事件源代码
执行结果我就不截图展示了,大家可以搜索某大讯飞的主页测试以下这段代码。
【总结】
好了,今天的内容就到这里了,我们只是使用ActionChains展示了鼠标悬停的使用方法,感兴趣的童鞋们可以自己试一下其他的功能。国内很多互联网厂商都提供了网盘功能,打开这些网盘的页面,这些页面往往提供了一些鼠标右键操作的方式,我们可以使用上面的context_click()方法模拟鼠标右键操作。这里只是做一引申,感兴趣的童鞋们自己试试看。后面我们还有精彩内容,欢迎加关注。
转载请注明出处,百家号:Python高手养成。