selnium 之实际案例
1、文本框和密码框定位、按钮
案例链接:http://49.233.201.254:8080/cms/manage/login.do
案例:
from selenium import webdriver
from time import *
dx=webdriver.Chrome()
dx.get("http://49.233.201.254:8080/cms/manage/login.do")
dx.maximize_window()
sleep(2)
dx.find_element_by_id("userAccount").send_keys("admin") #文本框
sleep(2)
dx.find_element_by_id("loginPwd").send_keys("123456") #密码框
sleep(2)
dx.find_element_by_id("loginBtn").click() #登录按钮
注意:
send _keys 输入
click() 点击
2、链接,隐藏框
案例1:链接案例
网站:http://www.baidu.com
from selenium import webdriver
from time import *
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
dx.maximize_window()
sleep(2)
dx.find_element_by_link_text("hao123").click()
案例2:隐藏框 shift+ctrl+c查看隐藏元素
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
dx.maximize_window()
sleep(2)
wz=dx.find_element_by_link_text('更多')
ActionChains(dx).move_to_element(wz).perform()
sleep(2)
dx.find_element_by_xpath('//*[@id="s-top-more"]/div[5]/a/div').click()
案例3:selenium中的三种等待方式
(1)强制等待
设置固定的线程休眠时间
(2)隐式等待
设置固定的休眠时间前执行完成,就会执行下一步
(3)显式等待(理解)
案例:
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
dx.implicitly_wait(20) # 隐式等待
dx.maximize_window()
sleep(10) #强制等待
wz=dx.find_element_by_link_text('更多')
ActionChains(dx).move_to_element(wz).perform()
dx.implicitly_wait(20)
案例4:获取元素的文本(text)
案例:
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
wb=dx.find_element_by_id('s-top-loginbtn').text
print(wb)
if wb=="登 录":
print("0k")
else:
print("no")
案例5:获取窗口标题 title
案例:
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
print(dx.title) #百度一下,你就知道
dx.get("http://www.jd.com")
print(dx.title) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!
案例:
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
print(dx.title) #百度一下,你就知道
dx.find_element_by_link_text("hao123").click()
print(dx.title) #百度一下,你就知道
案例6:断言
第一种if语句(无论对错,都有输出)
案例:
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
if dx.title"百度一下,你就知道":
print("正确")
else:
print("错误")
第二种 assert (对的就执行下一步,错直接报错)
安立路
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
assert dx.title"bai" #AssertionError
print(1)
案例7:设置窗口
(1)窗口最大化(maximize_window())
案例:
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
dx.maximize_window()
(2)设置窗口的大小(set_window_size)
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
dx.set_window_size(500,500) #设置窗口大小
(3)获取窗口大小
案例:
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
sleep(2)
print(dx.get_window_size()) #{'width': 1050, 'height': 850}
案例8:
refresh刷新
back返回上一步
forward() #返回下一步
案例:
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
sleep(3)
dx.refresh() #刷新
dx.get("http://www.taobao.com")
dx.back()#返回上一步
sleep(4)
dx.forward() #返回下一步
案例9:
close() 关闭当前浏览器
quit() 关闭所有的浏览器
案例:
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
sleep(2)
print(dx.title)
dx.find_element_by_link_text("hao123").click()
print(dx.title)
dx.close() #关闭百度的网页
dx.quit() #全部关闭
案例10:切换窗口
(1)、重开窗口(dx.execute_script('window.open("网站")'))
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
sleep(2)
print(dx.title)
dx.execute_script('window.open("http://www.jd.com")')
print(dx.title)
(2)切换窗口(2个窗口0,1)
a、current_window_handle #获取当前句柄
b、window_handles #获取所有句柄
c、切换窗口:switch_to.window【句柄【索引】】
案:两个窗口 0,1
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
sleep(2)
print(dx.title)
dx.execute_script('window.open("http://www.jd.com")')
print(dx.title)
jb=dx.current_window_handle #获取当前句柄
print(jb) #8AF0E28C861F3F35B32F9FEC5F1DC95D
handles=dx.window_handles #获取所有句柄
print(handles) # ['8AF0E28C861F3F35B32F9FEC5F1DC95D', '69DBE3976128FE0052F4F9D1606328A4']
dx.switch_to.window(handles[1]) #q
print(dx.title)
sleep(2)
dx.find_element_by_xpath('//*[@id="ttbar-login-2024"]/a[2]').click() #免费注册
切换窗口:(3个窗口0,2,1)
案例:
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
sleep(2)
dx.execute_script('window.open("http://www.taobao.com")')
print(dx.title)
dx.execute_script('window.open("http://www.jd.com")')
print(dx.title)
jb=dx.current_window_handle #获取当前句柄
print(jb) #8AF0E28C861F3F35B32F9FEC5F1DC95D
handles=dx.window_handles #获取所有句柄
print(handles) #
dx.switch_to.window(handles[1]) #q
print(dx.title)
sleep(2)
dx.find_element_by_xpath('//[@id="ttbar-login-2024"]/a[2]').click() #免费注册
切换窗口:(多个窗口通过if判断进行切换)
from selenium import webdriver
from time import *
from selenium.webdriver.common.action_chains import ActionChains
dx=webdriver.Chrome()
dx.get("http://www.baidu.com")
sleep(2)
dx.execute_script('window.open("http://www.taobao.com")')
print(dx.title)
dx.execute_script('window.open("http://www.jd.com")')
print(dx.title)
jb=dx.current_window_handle #获取当前句柄
print(jb) #8AF0E28C861F3F35B32F9FEC5F1DC95D
handles=dx.window_handles #获取所有句柄
print(handles) #
for i in handles:
dx.switch_to.window(i)
if '京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!' in dx.title:
break
print(dx.title)
sleep(2)
dx.find_element_by_xpath('//[@id="ttbar-login-2024"]/a[2]').click() #免费注册
案例11:下拉框
三种方法:
select_by_index(1) 通过索引定位
select_by_value()通过value定位
select_by_visible_text() 通过文本定位
案例:
from selenium import webdriver
from selenium.webdriver.support.select import Select
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("file:///E:/dcs/two/ui%E8%87%AA%E5%8A%A8%E5%8C%96/%E5%BC%B9%E6%A1%86/select.html") #打开百度网站
dx.maximize_window()
time.sleep(3)
wz=dx.find_element_by_id('dropdown')
Select(wz).select_by_index(1) #索引 索引从0开始
Select(wz).select_by_value('option3') #值
Select(wz).select_by_visible_text('绍兴') #文本内容
案例12:alert弹框
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("file:///E:/dcs/two/ui%E8%87%AA%E5%8A%A8%E5%8C%96/%E5%BC%B9%E6%A1%86/alert%E5%BC%B9%E6%A1%86.html") #打开百度网站
time.sleep(3)
tk=dx.switch_to.alert #切换弹框
tk.dismiss() #取消
time.sleep(2)
tk.accept() #确认
案例13:确认型弹框
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get('file:///E:/dcs/two/ui%E8%87%AA%E5%8A%A8%E5%8C%96/%E5%BC%B9%E6%A1%86/enter.html')
time.sleep(3)
dx.find_element_by_class_name('alert').click()
tk=dx.switch_to.alert #切换弹框
time.sleep(2)
tk.accept() #确认
tk.dismiss() #取消
14、输入型弹框
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get('file:///E:/dcs/two/ui%E8%87%AA%E5%8A%A8%E5%8C%96/%E5%BC%B9%E6%A1%86/prompt.html')
time.sleep(3)
dx.find_element_by_class_name('alert').click()
tk=dx.switch_to.alert #切换弹框
tk.send_keys("www.baidu.com") #输入网址
tk.accept() #确认
15、上传文件类型弹框
案例:
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("file:///E:/dcs/two/ui%E8%87%AA%E5%8A%A8%E5%8C%96/%E5%BC%B9%E6%A1%86/upload_file.html")
time.sleep(3)
dx.find_element_by_id('file').send_keys(r'E:\dcs\笔记\第一阶段\linux1.txt')