前言
一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210415
【Selenium核心技术篇】包含以下内容:
- Selenium实现元素定位(8种)
- Selenium WebDriver
- Selenium WebElement
- Selenium操作from表单
- Selenium操作checkbox和radiobutton
- Selenium操作下拉列表
- Selenium处理弹框
- Selenium三种等待方式
- Selenium等待条件
- Selenium鼠标和键盘事件
- Selenium执行JavaScript脚本
- Selenium屏幕截图
- Selenium之frame的切入和切出
Selenium鼠标和键盘事件
selenium中的鼠标和键盘事件被封装在ActionChains类中,正确的使用方法是:
ActionChains(driver).click(btn).perform()
下面列出ActionChains中常用方法:
鼠标方法。使用的时候后面带.perform() | 方法描述 |
click(on_element=None) | 单击鼠标左键 |
click_and_hold(on_element=None) | 按住鼠标左键在元素上,点击并且不释放 |
context_click(on_element=None) | 单击鼠标右键 |
double_click(on_element=None) | 双击鼠标左键 |
drag_and_drop(source, target) | 鼠标拖动,拖拽某个元素然后松开。source: 鼠标拖动的源元素。target: 鼠标释放的目标元素。 |
drag_and_drop_by_offset(source, xoffset,yoffset) | 鼠标拖动,拖拽某个坐标然后松开 |
release(on_element=None) | 释放鼠标左键 |
move_to_element(to_element) | 鼠标悬停(移动到某个元素)。to_element:指定元素 |
move_to_element_with_offset(to_element,xoffset,yoffset) | 鼠标从当前位置移动到距某个坐标(左上角坐标)多少距离的位置 |
move_to_offset(xoffset,yoffset) | 鼠标从当前位置移动到某个坐标 |
perform() | 提交已保存的操作(执行键中的所有动作) |
键盘方法 | |
key_down(value,element=None) | 按下键盘上的某个按键 |
key_up(value,element=None) | 松开键盘上的某个按键 |
send_keys_to_element(elemernt,*keys_to_send) | 发送某个键到指定元素 |
send_keys(Keys.BACK_SPACE) | 删除键(BackSpace ) |
send_keys(Keys.SPACE) | 空格键(Space) |
send_keys(Keys.TAB) | 制表键(Tab) |
send_keys(Keys.ESCAPE) | 回退键(Esc) |
send_keys(Keys.ENTER) | 回车键(Enter) |
send_keys(Keys.CONTROL,'a') | 全选(Ctrl+A)。注意系统,MAC的快捷键就不一样,应为:send_keys(Keys.COMMAND,'a'),其他类似。 |
send_keys(Keys.CONTROL,'c') | 复制(Ctrl+C) |
send_keys(Keys.CONTROL,'x') | 剪切(Ctrl+X) |
send_keys(Keys.CONTROL,'v') | 粘贴(Ctrl+V) |
send_keys(Keys.F1) | 键盘F1 |
… send_keys(Keys.F12) | 键盘F12 |
实操
1、用这个页面测鼠标点击事件:http://sahitest.com/demo/clicks.htm
2、Selenium鼠标和键盘事件练习
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
class casetest(object):
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
# self.driver.get('http://sahitest.com/demo/clicks.htm') #鼠标用,执行键盘方法的时候注释,用百度
def test_mourse(self):
btn = self.driver.find_element_by_xpath('/html/body/form/input[2]')
ActionChains(self.driver).double_click(btn).perform() #双击左键
sleep(2)
btn = self.driver.find_element_by_xpath('/html/body/form/input[3]')
ActionChains(self.driver).click(btn).perform() #单击
sleep(2)
btn = self.driver.find_element_by_xpath('/html/body/form/input[4]')
ActionChains(self.driver).context_click(btn).perform() #右击
sleep(2)
self.driver.quit()
def test_keys(self):
self.driver.get('http://www.baidu.com')
kw = self.driver.find_element_by_id('kw')
kw.send_keys('留白')
# windos系统
# kw.send_keys(Keys.CONTROL,'a')
# sleep(3)
# kw.send_keys(Keys.CONTROL,'x')
# sleep(3)
# kw.send_keys(Keys.CONTROL,'v')
# sleep(3)
# Mac系统快捷键不一样
kw.send_keys(Keys.COMMAND,'a')
sleep(3)
kw.send_keys(Keys.COMMAND,'x')
sleep(3)
kw.send_keys(Keys.COMMAND,'v')
sleep(3)
def test_move(self):
self.driver.get('http://www.baidu.com')
el = self.driver.find_element_by_link_text('新闻')
print(el)
# 鼠标移动到新闻,然后点击鼠标左键
ActionChains(self.driver).move_to_element(el).click(el).perform()
if __name__ == '__main__':
case = casetest()
# case.test_mourse()
# case.test_keys()
case.test_move()