UI自动化测试-ActionChains类的方法
ActionChains类的方法
ActionChains主要是针对鼠标事件的处理,在鼠标事件中常用的交互为悬浮,双击,以及右键等操作。如果想使用ActionChains的类,首先需要导入它,导入的命令为:
from selenium.webdriver.common.action_chains import ActionChains
1、悬浮
首先悬浮如下图所示:
其次,我们选择百度“设置”里的“搜索设置”,在弹出的框里选择“关闭”,“保存设置”,弹出“已经记录下您的使用偏好”。
1 from selenium import webdriver #包:selenium,模块:webdriver 2 from selenium.webdriver.common.action_chains import ActionChains 3 from selenium.webdriver.common.by import By 4 import time as t 5 6 7 driver=webdriver.Chrome() 8 driver.maximize_window() 9 driver.get("http://www.baidu.com") 10 11 # 鼠标事件的类进行实例化 12 action=ActionChains(driver=driver)#实例化 13 t.sleep(2) 14 setting=driver.find_element(By.XPATH,'//*[@id="s-usersetting-top"]') 15 action.move_to_element(setting).perform() #鼠标悬浮表现出来 16 17 # 点击搜索设置 18 driver.find_element(By.XPATH,'//*[@id="s-user-setting-menu"]/div/a[1]/span').click() 19 t.sleep(2) 20 21 # 点击关闭 22 driver.find_element(By.XPATH,'//*[@id="issw1_2"]').click() 23 t.sleep(2) 24 25 #点击保存设置 26 driver.find_element(By.XPATH,'//*[@id="se-setting-7"]/a[2]').click() 27 28 #获取弹出框的文本信息 29 text=driver.switch_to.alert.text 30 assert text=="已经记录下您的使用偏好" 31 t.sleep(4) 32 driver.quit()
这里使用了断言“assert“,来进行判断,看我们输入的是否合理。
注意:这里的"XPATH",可能会动态的发生变化,但不影响我们的定位,只要重新打开网页,进行复制即可。
练习:使用了断言“assert“,来判断新浪邮箱的输入框里是否出现提示信息:”输入邮箱名/手机号“
使用了断言“assert“,来判断新浪邮箱的输入框里来验证用户为空的错误提示信息:”请输入邮箱名“
1 from selenium import webdriver #包:selenium,模块:webdriver 2 from selenium.webdriver.common.by import By 3 import time as t 4 driver=webdriver.Chrome() 5 driver.maximize_window() 6 driver.get("http://mail.sina.com.cn/") 7 divText=driver.find_element(By.XPATH,'/html/body/div[1]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[2]/label') 8 assert divText.text=='输入邮箱名/手机号' 9 t.sleep(2) 10 #验证用户为空的错误提示信息 11 driver.find_element(By.XPATH,'/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[7]/div[1]/a[1]').click() 12 loginNull=driver.find_element(By.XPATH,'/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]') 13 assert loginNull.text=='请输入邮箱名' 14 driver.quit()
2、右键
首先右键如下图所示:
代码如下:
1 from selenium import webdriver #包:selenium,模块:webdriver 2 from selenium.webdriver.common.action_chains import ActionChains 3 from selenium.webdriver.common.by import By 4 import time as t 5 driver=webdriver.Chrome() 6 driver.maximize_window() 7 driver.get("http://www.baidu.com") 8 action=ActionChains(driver=driver) 9 so=driver.find_element(By.ID,'kw') 10 t.sleep(3) 11 action.context_click(on_element=so).perform() #def context_click(self, on_element=None)中on_element=None也可以不写。 12 t.sleep(2) 13 driver.quit()
3、双击
应用场景:支付等
1 from selenium import webdriver #包:selenium,模块:webdriver 2 from selenium.webdriver.common.action_chains import ActionChains 3 from selenium.webdriver.common.by import By 4 import time as t 5 driver=webdriver.Chrome() 6 driver.maximize_window() 7 driver.get("http://www.baidu.com") 8 action=ActionChains(driver=driver) 9 driver.find_element(By.ID,'kw').send_keys("小米智能音箱") 10 #百度界面的“百度一下” 11 so=driver.find_element(By.ID,'su') 12 t.sleep(3) 13 action.double_click(on_element=so).perform() 14 t.sleep(2) 15 driver.quit()
4、截图
1 from selenium import webdriver #包:selenium,模块:webdriver 2 from selenium.webdriver.common.action_chains import ActionChains 3 from selenium.webdriver.common.by import By 4 import time as 5 driver=webdriver.Chrome() 6 driver.maximize_window() 7 driver.get("http://www.bing.com") 8 action=ActionChains(driver=driver) 9 driver.find_element(By.ID,'sb_form_q').send_keys("小米智能音箱") 10 so=driver.find_element(By.CSS_SELECTOR,'#search_icon > svg') 11 t.sleep(3) 12 action.double_click(on_element=so).perform() 13 driver.get_screenshot_as_file("xiaomi.png") 14 t.sleep(2) 15 driver.quit()
截图结果如下: