鼠标操作
鼠标右击:action.context_click(driver.find_element(By.ID,"kw"))
双击:action.double_click(driver.find_element(By.ID,"kw"))
鼠标悬停:
action.move_to_element(element)
鼠标滑动验证码:单元素拖动实现步骤
action.drag_and_drop_by_offset(source=element,xoffset=260,yoffset=0)
鼠标拖动事件:两个参数
source=driver.find_element(By.ID,"div1") target=driver.find_element(By.ID,"div2") action=ActionChains(driver) action.drag_and_drop(source="",target="")action.perform()
action.perform()才执行
鼠标右击:action.context_click(driver.find_element(By.ID,"kw"))
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
action=ActionChains(driver)
#鼠标右击
action.context_click(driver.find_element(By.ID,"kw"))
action.perform()
time.sleep(3)
driver.quit()
鼠标悬停:
action.move_to_element(element)
键盘操作:
下拉框操作:Select类
select.select_by_index(index)
参数
index
表示的
option
索
引
select.select_by_value(value)
参数
value
表示的是
option
元属中
value
的属性值
select.select_by_visible_text(visible_text )
参数
visible_text
表示的是
option
的文本内容。
element = driver.find_element(By.CSS_SELECTOR,
"#selectA")
select = Select(element)
# 通过select对象的index来选择广州
time.sleep(2)
select.select_by_index(2)
# 通过select对象的value来选择上海
time.sleep(2)
select.select_by_value("sh")
# 通过select对象的visible来选择深圳
time.sleep(2)
select.select_by_visible_text("深圳")
弹出框操作:
driver.switch_to.alert 获取弹出框对象
处理弹出框
alert.text 获取弹出框提示信息
alert.accept() 确定弹出框
alert.dismiss() 取消弹出框
alert = driver.switch_to.alert
# 打印信息,然后取消
print(alert.text)
alert.dismiss()
# 在用户名输入框中输入admin
driver.find_element(By.ID,
'userA').send_keys("admin")
滚动条操作:
1
、定义
js
js = "window.scrollTo(0, 2000)" #
如果想要移动到最下
方,
y
值给最大值就可以了。
2
、执行
JS
driver.execute_script(js)
# 控制滚动条到最下方
# 1、定义js
js = "window.scrollTo(0, 2000)"
# 2、执行JS
driver.execute_script(js)
1、frame切换
frame
切换实现方法:
driver.switch_to.frame(frame_reference) -->
切换到指定
frame
的方法
frame_reference
:可以为
frame
框架的
name
、
id
或者定位
到的
frame
元素
. driver.switch_to.default_content() -->
恢复默认页面方法
driver.switch_to.frame(driver.find_element(By.ID,
"idframe1"))
driver.find_element(By.ID,
"AuserA").send_keys("adminA")
2、多窗口切换
窗口操作的三种方法
获取当前窗口句柄: driver.current_window_handle
获取所有窗口句柄: driver.window_handles 返回的是
一个列表
切换窗口句柄: driver.switch_to.window(window_handle)
window_handle表示的是要切换到哪个窗口句柄
窗口句柄:由操作系统生成的一串唯 一识别码,是一串字符。
# 回到默认首页面
driver.switch_to.default_content()
# 针对注册用户B输入用户名adminB
ele_frame = driver.find_element(By.ID, "idframe2")
driver.switch_to.frame(ele_frame)
driver.find_element(By.ID,
"BuserA").send_keys("adminB")
多窗口切换:
窗口操作的三种方法
获取当前窗口句柄:
driver.current_window_handle
获取所有窗口句柄
: driver.window_handles
返回的是
一个列表
切换窗口句柄
: driver.switch_to.window(window_handle)
window_handle
表示的是要切换到哪个窗口句柄
# 在注册实例页面中点击 注册A页面
driver.find_element(By.ID, "ZCA").click()
time.sleep(1)
# 获取当前窗口句柄信息
print(driver.current_window_handle)
# 获取所有窗口句柄
windows = driver.window_handles
# 切换窗口句柄
driver.switch_to.window(windows[-1])
# 在注册A页中输入用户名和密码
driver.find_element(By.ID,
"userA").send_keys("admin")
窗口截图:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8
%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8
%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%
E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
try:
# 输入用户名
driver.find_element(By.ID,
"userA").send_keys("admin")
# 输入密码
driver.find_element(By.ID,
"padd").send_keys("1234")
except Exception as e:
driver.get_screenshot_as_file("img/error.png")
2、验证码处理
2.1 什么是验证码?
验证码就是指一种随机生成的信息(数字、字母、汉字、图片、算
术题)等为了防止恶意的请求行为,增加应用的
安全性。
自动化过程中也是需要进行注册或者登陆的操作,所以需要处理验
证码。
2.2 验证码处理方式
去掉验证码 由开发操作 , 用在测试环境
设置万能验证码 由开发 操作, 一般也只使用在测试环境,
验证码识别技术 由于技术难度高,识别率很难达到100%,
一般不建议使用
记录COOKIE 通过记录cookie来跳过登陆的操作。
2.3 Cookie原理
原理:
raise e
time.sleep(3)
driver.quit()
数据驱动:读取jsonwen文件
读取yaml文件:
pythom创建excel 文件并写入数据:
import openpyxl
#创建excel并写入数据
def createExcel():
wk=openpyxl.Workbook()
sheet=wk.active
sheet.cell(1,1).value="username"
sheet.cell(1, 2).value = "password"
sheet.cell(2, 1).value = "159"
wk.save("userinfo.xlsx")
if __name__ == '__main__':
createExcel()
读取excel文件:
#读取excel 数据
import openpyxl
#创建excel并写入数据
def createExcel():
wk=openpyxl.Workbook()
sheet=wk.active
sheet.cell(1,1).value="username"
sheet.cell(1, 2).value = "password"
sheet.cell(2, 1).value = "159"
wk.save("userinfo.xlsx")
#读取excel 数据
def readExcel(filepath):
wk=openpyxl.load_workbook(filepath)
sheet1=wk["Sheet"]
value=sheet1.cell(1,1).value
print(value)
#总行数
rows=sheet1.max_row
col=sheet1.max_column
print(rows,col)
datalist=[]
#读取所有数据:
for row in range(1,rows+1):
for j in range(1,col+1):
value=sheet1.cell(row,j).value
datalist.append(value)
return datalist
def getExcel(filepath):
data=readExcel(filepath)
print(data)
if __name__ == '__main__':
createExcel()
readExcel("userinfo.xlsx")