3.6 ActionChains 类实战
在功能的自动化测试中,经常会用到鼠标事件。在 Selenium 中,主要在action_chains 模块的 ActionChains 类中,导入的方式为:
from selenium.webdriver.common.action_chains import ActionChains
1. ActionChains 类详解
在 ActionChains 类中提供了对常用鼠标操作的方法,例如,鼠标悬浮到某一元素等操作。要使用 ActionChains 类中的方法首先需要对 ActionChains 类进行实例化,该类的构造函数参数为 driver,也就是 WebDriver 实例化后的对象,对ActionChinas 类实例化后可以调用它里面的方法,实例化该类的代码如下:
#!/usr/bin/env python #-*-coding:utf-8-*- #author:wuya from selenium import webdriver import time as t from selenium.webdriver.common.action_chains import ActionChains driver=webdriver.Firefox() driver.maximize_window() driver.implicitly_wait(30) driver.get('http://www.baidu.com') #对ActionChains类进行实例化 actionChains=ActionChains(driver) driver.quit() |
对 ActionChains 类实例化后,输入对象 actionChains,按下鼠标,就会显示该类中的方法,如图 3-6-1 所示。
图 3-6-1
2. 鼠标悬浮操作
move_to_element 方法用来使鼠标悬浮到某一元素上。这里以百度首页的搜索设置为例,要想选择"搜索设置"选项,首先需要鼠标悬浮到"设置"选项上,显示"搜索设置"后才可以点击,如图 3-6-2 所示。
图 3-6-2
要想实现拖动鼠标悬浮到"设置",再点击"搜索设置"按钮,测试代码如下:
#!/usr/bin/env python #-*-coding:utf-8-*- #author:wuya from selenium import webdriver import time as t from selenium.webdriver.common.action_chains import ActionChains driver=webdriver.Firefox() driver.implicitly_wait(30) driver.get('http://www.baidu.com') #对ActionChains类进行实例化 actionChains=ActionChains(driver) locator=driver.find_element_by_css_selector('#u1 > a.pf') #鼠标悬浮到设置 actionChains.move_to_element(locator).perform() #点击搜索设置 driver.find_element_by_xpath('//*[@id="wrapper"]/div[6]/a[1]').click() driver.quit() |
运行以上代码就可以看到,鼠标移动到"设置"选项,显示"搜索设置"选项后,点击"搜索设置"按钮,并跳转到"搜索设置"页面(参见图 3-6-2)。
3. 鼠标右键操作
content_click 是触发鼠标右键操作的方法。这里以百度首页为例,要想用鼠标在搜索输入框上点击右键时,弹出鼠标右键的交互信息,实现的代码如下:
#!/usr/bin/env python #-*-coding:utf-8-*- #author:wuya from selenium import webdriver import time as t from selenium.webdriver.common.action_chains import ActionChains driver=webdriver.Firefox() driver.implicitly_wait(30) driver.get('http://www.baidu.com') #对ActionChains类进行实例化 actionChains=ActionChains(driver) so=driver.find_element_by_id('kw') #鼠标在百度搜索输入框右键操作 actionChains.context_click(so).perform() t.sleep(6) driver.quit() |
4. 鼠标双击操作
double_click 是触发鼠标双击操作的方法,一般使用在有数据交互的地方。例如,有这样一个业务,点击按钮会向数据库中插入一条数据,而且只能插入一条数据,如果前端对双击没有进行处理的话,双击按钮后就会向数据库插入两条数据。这里以百度首页的"百度一下"按钮为例,演示双击事件在自动化测试中的应用。实现的代码如下:
#!/usr/bin/env python #-*-coding:utf-8-*- #author:wuya from selenium import webdriver import time as t from selenium.webdriver.common.action_chains import ActionChains driver=webdriver.Firefox() driver.implicitly_wait(30) driver.get('http://www.baidu.com') #对ActionChains类进行实例化 actionChains=ActionChains(driver) driver.find_element_by_id('kw').send_keys('Selenium') locator=driver.find_element_by_id('su') #对"百度一下"按钮双击操作 actionChains.double_click(locator).perform() driver.quit() |
版权声明:51Testing软件测试网获得电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。