ActionChains主要是针对鼠标事件的处理,在鼠标事件中常用的交互为悬浮,双击,以及右键等
操作。如果想使用ActionChains的类,首先需要导入它,导入的命令为:
from selenium.webdriver.common.action_chains import ActionChains
下面我们可以查看该类的详细的使用,该类的源码具体如下;
def __init__(self, driver):
"""
Creates a new ActionChains.
:Args:
- driver: The WebDriver instance which performs user actions.
"""
self._driver = driver
self._actions = []
self.w3c_actions = ActionBuilder(driver)
在构造方法中,我们可以看到,要想使用该类,那么首先就需要针对这个类我们需要做类的实例化
的操作,源码中的drievr其实可以理解为webdriver的类实例化后的对象,那么针对该类实例化的源
码具体为:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
#author:无涯
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
#针对ActionChains类进行实例化操作
action=ActionChains(driver=driver)
driver.quit()
下面详细的演示下这部分的应用。
一、悬浮
悬浮的交互这地方就以百度搜索的设置来案例,鼠标悬浮到设置,就会显示出下拉框的内容信息,
具体交互信息如下:
下面就实现这部分,具体案例代码如下:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
#author:无涯
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.implicitly_wait(30)
#获取到百度设置的元素属性
locator=driver.find_element_by_xpath('//*[@id="s-usersetting-top"]')
action=ActionChains(driver=driver)
#鼠标悬浮到设置按钮
action.move_to_element(locator).perform()
t.sleep(5)
driver.quit()
二、右键
右键使用到的方法为content_click() 的方法,下面就以百度搜索输入框为案例,来演示右键的
操作,具体实现的代码为:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
#author:无涯
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
#针对ActionChains类进行实例化操作
action=ActionChains(driver=driver)
so=driver.find_element_by_id('kw')
action.context_click(so).perform()
t.sleep(5)
driver.quit()
三、鼠标双击
double_click一般主要应用于数据的交互方面,比如添加用户姓名的按钮,假设程序规定用户名称是唯一
的,那么双击后是否插入了两条用户名称一样的信息了,这就需要来验证,提交数据后,然后在数据列表中
使用用户名称来查询,查看是否存在两条数据,一般而言,前后端的程序员都是会处理这些的,但是作为测试
我们还是需要验证这些测试场景。下面主要结合百度搜索来作为案例,具体代码如下:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
#author:无涯
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys('Selenium3')
#对百度搜索按钮进行双击
soButton=driver.find_element_by_id('su')
actions=ActionChains(driver=driver)
actions.double_click(soButton).perform()
t.sleep(5)
driver.quit()
感谢您的阅读,后续会持续更新!