python中的alert警告操作、弹出框和下拉框事件
自动化测试知识点
from selenium import webdriver from selenium.webdriver.common.alert import Alert import time as t
1、'''alert警告操作'''(.py代码)
driver=webdriver.Chrome() driver.maximize_window() driver.get('file:///D:/code/testDev/UI%E8%87%AA%E5%8A%A8%E5%8C%96/API/alter.html') #获取alert警告框的文本信息 print('获取alert的文本信息:',driver.switch_to.alert.text) t.sleep(3) #点击确定按钮 driver.switch_to.alert.accept() t.sleep(3) river.quit()
(index.html代码)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <center> <a href="frame-1.html">无涯</a> </center> <iframe src="frame-1.html" frameborder="0" height="170" width="300" id="frame"></iframe> </body> </html>
2、'''确认弹出框'''(.py代码)
driver=webdriver.Chrome() driver.maximize_window() driver.get('file:///D:/code/testDev/UI%E8%87%AA%E5%8A%A8%E5%8C%96/API/dismiss.html') #点击按钮 driver.find_element_by_xpath('/html/body/input').click() #点击确认按钮 driver.switch_to.alert.accept() t.sleep(5) #再次刷新页面 driver.refresh() t.sleep(5) driver.find_element_by_xpath('/html/body/input').click() #点击取消按钮 driver.switch_to.alert.dismiss() t.sleep(5) driver.quit()
(index1.html代码)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <center> <iframe id="iframe" src="http://www.bing.com " width="800" height="400"></iframe> </center> username:<input type="text" id="username" placeholder="请输入用户名"> </body> </html>
(1)、'''实战(弹出框)'''(.py代码)
driver=webdriver.Chrome() driver.maximize_window() driver.get('file:///D:/code/testDev/UI%E8%87%AA%E5%8A%A8%E5%8C%96/API/dismiss1.html') #点击按钮 driver.find_element_by_xpath('/html/body/input').click() #弹出框里面输入内容 driver.switch_to.alert.send_keys('明天会更好') t.sleep(5) driver.switch_to.alert.dismiss() t.sleep(5) #点击按钮 driver.find_element_by_xpath('/html/body/input').click() driver.switch_to.alert.send_keys('明天会更好') t.sleep(5) #点击确认按钮 driver.switch_to.alert.accept() t.sleep(5) driver.quit()
(frame-1.html代码)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <center> 用户名:<input type="text" id="username" placeholder="请输入用户名:"> </center> </body> </html>
(2)、'''sina邮箱实战'''
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.sina.com.cn/') #登录 #输入用户名 driver.find_element_by_class_name('username').send_keys('wuya1303@sina.com') t.sleep(3) #输入密码 driver.find_element_by_class_name('password').send_keys('admin123') t.sleep(3) #点击登录 driver.find_element_by_class_name('loginBtn').click() t.sleep(3) #获取nick(昵称)文本信息(text) nick=driver.find_element_by_xpath('//*[@id="greeting"]/span').text #获取nick的值 print('nick的信息:',nick) assert nick=='test' t.sleep(3) #点击写信按钮 driver.find_element_by_xpath('//*[@id="coreBtn"]/ul/li[1]/a').click() t.sleep(3) #输入收件人 # driver.find_element_by_xpath('//*[@id="tr_to"]/td/ul/li/input').send_keys('891708041@qq.com') inputText=driver.find_element_by_xpath('//*[@id="tr_to"]/td/ul/li/input') inputText.send_keys('891708041@qq.com') assert inputText.get_attribute('value')=='891708041@qq.com' t.sleep(3) #进入iframe框架中 # driver.switch_to.frame(0) # t.sleep(3) driver.quit()
(3)、'''qq邮箱实战'''
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.qq.com/') #进入iframe框架中 driver.switch_to.frame('login_frame') #登录 #输入邮箱 driver.find_element_by_id('u').send_keys('891708041@qq.com') t.sleep(3) #输入密码 driver.find_element_by_id('p').send_keys('4545') t.sleep(3) #单击登录 driver.find_element_by_class_name('btn').click() t.sleep(3) errorText=driver.find_element_by_xpath('//*[@id="err_m"]') # assert errorText.text=='你输入的账户或密码不正确,请重新输入' t.sleep(3) driver.quit()
(4)、'''sina邮箱测试点梳理和验证(1、错误提示信息验证2、超链接验证)'''
(4-1)、账户名和密码都为空
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.sina.com.cn/') #点击登录按钮(在账户和密码都为空的前提下) driver.find_element_by_class_name('loginBtn').click() errorText=driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]') #验证为空的错误提示信息 assert errorText.text=='请输入邮箱名' t.sleep(3) driver.quit()
(4-2)、密码为空的情况
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.sina.com.cn/') #输入账户 driver.find_element_by_id('freename').send_keys('124563@sina.com') t.sleep(3) errorText=driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[2]') driver.find_element_by_class_name('loginBtn').click() #验证密码为空的错误提示信息 assert errorText.text=='请输入密码' t.sleep(3) driver.quit()
(4-3)、账户为空的情况
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.sina.com.cn/') #输入密码 driver.find_element_by_id('freepassword').send_keys('124563') t.sleep(3) #点击登录 driver.find_element_by_class_name('loginBtn').click() errorText=driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]') #验证账户为空的错误提示信息 assert errorText.text=='请输入邮箱名' t.sleep(3) driver.quit()
(4-4)、账户或者密码错误的情况
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.sina.com.cn/') #输入错误的账户 driver.find_element_by_id('freename').send_keys('wuya1304@sina.com') t.sleep(3) #输入正确的密码 driver.find_element_by_id('freepassword').send_keys('admin123') t.sleep(3) #点击登录 driver.find_element_by_class_name('loginBtn').click() errorText=driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]') #验证登录名或密码错误的提示信息 assert errorText.text=='登录名或密码错误' t.sleep(3) driver.quit()
(4-5)、'''测试sina邮箱忘记密码'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://mail.sina.com.cn/')
#获取当前窗口
nowHandler=driver.current_window_handle
#点击忘记密码
driver.find_element_by_link_text('忘记密码?').click()
#获取当前所有打开的窗口句柄
allHandler=driver.window_handles
#切换到忘记密码页面
for handler in allHandler:
#判断是否为当前窗口
if handler!=nowHandler:
#切换到新的窗口
driver.switch_to.window(handler)
url=driver.current_url
print(url.endswith('entry=freemail'))
assert url.endswith('entry=freemail')==True
#切换回sina邮箱登录首页
driver.switch_to.window(nowHandler)
t.sleep(3)
driver.quit()
5、select处理的三个思路
1、按索引的方式定位下拉框
2、按value值的方式定位下拉框
3列表、按text文本值的方式定位下拉框
(1)'''下拉框(select)的应用'''
from selenium import webdriver
import time as t
from selenium.webdriver.support.select import Select
driver=webdriver.Chrome() driver.maximize_window() driver.get('file:///D:/code/testDev/UI%E8%87%AA%E5%8A%A8%E5%8C%96/select.html')
#操作select
sel=driver.find_element_by_name('nr') select=Select(sel) t.sleep(3)
#按索引的方式定位下拉框
select.select_by_index(2) t.sleep(3)
#按text文本值的方式定位下拉框
select.select_by_visible_text('Java语言') t.sleep(3) driver.quit()
(11)'''实战(boss直聘)'''
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.zhipin.com/xian/?sid=sem_pz_360pc_title') driver.find_element_by_xpath('//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/div[2]/div/span/b').click() t.sleep(3) driver.find_element_by_xpath('//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/div[4]/div/div/ul[1]/li[3]').click() t.sleep(3) driver.find_element_by_xpath('//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/div[4]/div/div/ul[2]/li[3]').click() t.sleep(3) driver.find_element_by_xpath('//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/div[4]/div/div/ul[3]/li[2]').click() t.sleep(3)
#搜索职位
driver.find_element_by_name('qurey').send_keys('测试架构师') t.sleep(3)
#点击搜索
driver.find_element_by_xpath('//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/div[2]/p/input')
t.sleep(3)
#选择公司规模
driver.find_element_by_xpath('//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/div[2]/p/input')
t.sleep(3)
driver.find_element_by_xpath('//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/div[2]/p/input')
t.sleep(3)
driver.quit()