Python+selenium是当前常用的自动化测试环境之一,在自动化测试框架中,常用的是POM模型,下面是对常用的页面操作的总结:
1、输入框:
from selenium import webdriver
#定位文本框
tk=driver.get_element_by_id("id")
#清空文本框
tk.clear()
#文本框中输入内容
tk.send_keys("value")
2、下拉选择框
a、通过select进行定位下拉框------通过代码段定位
#导入Select方法
from selenium.webdriver.support.select import Select
#通过index进行选择
Select(driver.find_element_by_id("id")).select_by_index("index")
#通过value进行选择
Select(driver.find_element_by_id("id")).select_by_value("value")
#通过选项文字进行选择
Select(driver.find_element_by_id("id")).select_by_visible_text("visible_text")
b、定位非
#先定位到下拉菜单
select1=driver.find_element_by_id("id")
#在对下拉菜单中的选项进行选择
select1.find_element_by_id("id1").click()
3、取消下拉框选择---------select提供了四种方法取消选择
deselect_by_index(index)
deselect_by_value(value)
deselect_by_visible_text(visible_text)
deselect_all()
4、单选框
import webdriver
#找到单选框元素
radio_button=driver.find_element_by_id("id")
#选中单选框
radio_button.click()
#清空单选框
radio_button.clear()
#判断某个单选框是否已被选择,返回值为Boolean类型
radio_button.is_selected()
5、多选框-----复选框的type=checkbox,这里可以用xpath语法:.//*[@type='checkbox']
#find_elements是不能直接点击的,它是复数的,所以只能先获取到所有的checkbox对象,然后通过for循环去一个个点击操作
drvier.find_elements_by_xpath(".//[@type='checkbox']")
/////复选框单选
# 找到多选框元素
checkbox = driver.find_element_by_id("id");
# 点击复选框
checkbox.click()
#清除复选框
checkbox.clear()
#判断复选框是否被选中
checkbox.is_selected()
#判断复选框是否可用
checkbox.is_enabled();
/////复选框多选
checkboxs = driver.find_elements_by_xpath("//*[@type='checkbox']")
for i in checkboxs:
i.click()
6、按钮
# 找到按钮元素
saveButton = driver.find_element_by_id("id")
# 点击按钮
4 saveButton.click()
# 判断按钮是否可用
6 saveButton.is_enabled ()
7、弹出对话框(参考链接:https://www.cnblogs.com/mengyu/p/6952774.html)
a、警告消息框(alert)
警告消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说用户必须先关闭该消息框然后才能继续进行操作。
#获取alert对话框的按钮,点击按钮,弹出alert对话框
driver.find_element_by_xpath('xpath').click()
#获取alert对话框
alert = driver.switch_to_alert()
#添加等待时间
time.sleep(2)
#获取警告对话框的内容
print (alert.text) #打印警告对话框内容
#alert对话框属于警告对话框,我们这里只能接受弹窗
alert.accept()
b、确认消息框(confirm)
确认消息框向用户提示一个"是与否"问题,用户可以根据选择"确定"按钮和"取消"按钮。
#获取confirm对话框的按钮,点击按钮,弹出confirm对话框
driver.find_element_by_xpath('xpath').click()
#获取confirm对话框
dialog_box = driver.switch_to_alert()
#添加等待时间
time.sleep(2)
#获取对话框的内容
print (dialog_box.text) #打印警告对话框内容
#点击【确认】显示"您为何如此自信?"
dialog_box.accept() #接受弹窗
print (driver.find_element_by_xpath('xpath').text)
time.sleep(2)
#再次获取confirm对话框的按钮,点击按钮,弹出confirm对话框
driver.find_element_by_xpath('xpath').click()
#再次获取confirm对话框
dialog_box = driver.switch_to_alert()
#点击【取消】显示"您为何如此谦虚?"
time.sleep(2)
#点击取消
dialog_box.dismiss()
#关闭获取取消对话框
print (driver.find_element_by_xpath('xpath').text)
driver.quit()
c、提示消息对话(prompt)
提示消息框提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个"确定"按钮和一个"取消"按钮。选择"确认"会响应对应的提示信息,选择"取消"会关闭对话框。
#获取prompt对话框的按钮,点击按钮,弹出confirm对话框
driver.find_element_by_xpath('xpath').click()
#获取prompt对话框
dialog_box = driver.switch_to_alert()
#添加等待时间
time.sleep(2)
#获取对话框的内容
print (dialog_box.text) #打印警告对话框内容
dialog_box.send_keys("2") #弹出框内输入2
dialog_box.accept() #接受
print (driver.find_element_by_xpath('xpath').text) #获取关闭弹窗结果 #获取确认弹窗结果
'''这里等待几秒在测试取消'''
time.sleep(2)
#************************点击【取消】,并且获取显示结果**********************
driver.find_element_by_xpath('xpath').click()
#获取prompt对话框
dialog_box = driver.switch_to_alert()
#添加等待时间
time.sleep(2)
dialog_box.dismiss() #关闭对话框
print (driver.find_element_by_xpath('xpath').text) #获取关闭弹窗结果
time.sleep(2)
driver.quit()
selenium 提供switch_to_alert()方法定位到 alert/confirm/prompt对话框。使用 text/accept/dismiss/send_keys 进行操作,这里注意的是send_keys只能对prompt进行操作。
8、表单-------提交表单
driver.find_element_by_id("id").submmit()
9、上传文件
#coding=utf-8
from selenium import webdriver
import os,time
driver = webdriver.Firefox()
#脚本要与asd.html 同一目录
file_path = os.path.abspath('需要上传文档的html文件的名称')
print file_path
driver.get(file_path)
#定位上传按钮,添加本地文件
driver.find_element_by_xpath("html/body/div[1]/div/input").send_keys('上传的文件的路径')
time.sleep(2)
driver.quit()
10、鼠标悬停
# 导入selenium中的actionchains的方法
from selenium.webdriver.common.action_chains import ActionChains
#识别需要悬停的元素
ele = self.driver.find_element_by_class_name('class_name')
# 鼠标移到悬停元素上
ActionChains(self.driver).move_to_element(ele).perform()