1、创建浏览器驱动
# 1、创建浏览器驱动
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
# 第一种打开测试网站方式
driver.get("https://www.baidu.com") # 通过get方法直接打开测试网站
# 打开新窗口
# 第二种打开测试网站方式
# url = "http//:www.baidu.com"
# driver.get(url) # 通过get方法调用url变量进入网站
sleep(3) # 线程等待
driver.quit() # 退出浏览器驱动===》释放资源
2、ID 定位方法
# 2、ID 定位方法
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# id定位 通过ID定位到用户输入框输入admin
driver.find_element_by_id("userA").send_keys("admin") # send_keys 输入
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
3、class定位方法
# 3、class定位方法
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# id定位 通过ID定位到用户输入框输入admin
driver.find_element_by_id("userA").send_keys("admin") # send_keys 输入
sleep(2)
# name定位 通过name 定位到密码输入框输入
driver.find_element_by_name("passwordA").send_keys("123456")
sleep(2)
# class 定位 通过class定位到电话号码输入框
driver.find_element_by_class_name("telA").send_keys("15708460952")
# class 定位 通过class定位到邮箱输入框 class="emailA dzyxA" 只需要取其中一个
sleep(2)
driver.find_element_by_class_name("emailA").send_keys("zhuwei@duoceshi.com")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
4、Name定位方法
# 4、Name定位方法
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# id定位 通过ID定位到用户输入框输入admin
driver.find_element_by_id("userA").send_keys("admin") # send_keys 输入
sleep(2)
# name定位 通过name 定位到密码输入框输入admin#
driver.find_element_by_name("passwordA").send_keys("123456")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
5、tag_name标签定位方法
# 5、tag_name标签定位方法
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
#tag_name 标签位 通过标签定位到用户输入框输入admin
driver.find_element_by_tag_name("input").send_keys("admin")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
6、link_text 超链接定位方法
# 6、link_text 超链接定位方法
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
#标签位 通过link_tex超链接定位新浪元素
# driver.find_element_by_link_text("新浪").click() # click()点击操作
#
driver.find_element_by_link_text("访问 新浪 网站").click()
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
7、partail_link_text 超链接模糊定位
# 7、partail_link_text 超链接模糊定位
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# partial_link_text 模糊匹配超链接 也可以放全部的元素
driver.find_element_by_partial_link_text("访问 新浪").click()
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
8、find_elements定位一组元素
# 8、find_elements定位一组元素
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# 定位到input所有的标签 给到到elements变量
elements = driver.find_elements_by_tag_name("input")
# print(elements)
# 通过索引定位 input标签
# elements[2].send_keys("123456")
# 通过遍历
for i in elements:
# 判断 input标签由name属性的值为emailA
if i.get_attribute("name") == "emailA": # get_attribute 获取
i.send_keys("duoceshi@163.com")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
9、xpaeh相对和绝对路径定位
# 9、xpaeh相对和绝对路径定位
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# xpath 绝对路径写法 定位用户输入框
driver.find_element_by_xpath("/html/body/div/fieldset/form/p/input").send_keys("admin")
# xpath 相对路径写法 定位密码输入框
driver.find_element_by_xpath("//form/p[2]/input").send_keys("123456")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
10、xpath元素属性定位方法
# 10、xpath元素属性定位方法
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# xpath 元素属性 定位用户输入框
driver.find_element_by_xpath('//*[@placeholder="请输入用户名"]').send_keys("admin")
# xpath 元素属性+标签 定位密码输入框
driver.find_element_by_xpath('//input[@placeholder="请输入密码"]').send_keys("123456")
# xpath 元素属性组合(and)+标签
driver.find_element_by_xpath('//input[@placeholder="请输入电话号码" and @class="telA"]').send_keys("15708460952")
# xpath 元素属性层级下标结合
driver.find_element_by_xpath('//div[@class="zc"]/fieldset/form/p[4]/input').send_keys("duoce@163.com")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
11、xpatn扩展.py
# 11、xpatn扩展.py
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# xpath 扩展 通过a标签 定位所有的文本 //a[text()="访问 新浪 网站"]
driver.find_element_by_xpath('//a[text()="访问 新浪 网站"]').click()
# xpath 扩展 包含的文本 ==》写入全部的文本内容
driver.find_element_by_xpath('//input[contains(@placeholder,"用户名")]').send_keys("admin")
# xpath 扩展 以什么开头的文本
driver.find_element_by_xpath("//input[starts-with(@placeholder,'请输入密码')]").send_keys("123456")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
12、css_id、class选择器定位方法
# 12、css_id、class选择器定位方法
# 代表 id属性 . 代表class属性
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# css定位 通过id(#)定位到用户输入框输入admin
driver.find_element_by_css_selector("#userA").send_keys("admin") # send_keys 输入
sleep(2)
# css定位 通过class(.)定位到电话号码输入框输入admin#
driver.find_element_by_css_selector(".telA").send_keys("12345678911")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
13、css_元素属性标签选择器定位
# 13、css_元素属性标签选择器定位
# 代表 id属性 . 代表class属性
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# css定位 元素标签
driver.find_element_by_css_selector("input").send_keys("admin") # send_keys 输入
sleep(2)
# css定位 使用class属性时 要放全部的内容 class="emailA dzyxA"
driver.find_element_by_css_selector('[class="emailA dzyxA"]').send_keys("12345@qq.com")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
14、css_层级选择器
# 14、css_层级选择器
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# css定位 找父级(上级)定位用户输入框
driver.find_element_by_css_selector("#pa>#userA").send_keys("admin") # send_keys 输入
sleep(2)
# css定位 跨层级定位密码输入框
driver.find_element_by_css_selector('.zc #passwordA').send_keys("123456")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
15、css_扩展
# 15、css_扩展
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# css定位 以什么开头 ^
driver.find_element_by_css_selector('input[placeholder^="请输入用"]').send_keys("admin") # send_keys 输入
sleep(2)
# css定位 以什么结尾 $
driver.find_element_by_css_selector('input[placeholder$="密码"]').send_keys("123456")
# css定位 包含 *
driver.find_element_by_css_selector('input[placeholder*="电话"]').send_keys("123456677")
sleep(3) # 线程等待
# driver.quit() # 退出浏览器驱动===》释放资源
16、定位元素工作中写法
# 16、定位元素工作中写法
# find_element(By.ID,'id') 需要读入By类
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get(r'D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html')
# 定位用户输入框
# ID 写法
# driver.find_element_by_id("userA").send_keys("admin")
driver.find_element(By.ID,"userA").send_keys("admin")
# css写法
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
#xpath 写法
driver.find_element(By.XPATH,"//*[@id='userA']").send_keys("admin")
17、补充JS定位
# 17、补充JS定位
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
js = 'document.getElementById("kw").value="python"'
driver.execute_script(js)
18、元素操作
# 18、元素操作
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# 用户名输入:admin、密码:123456、电话号码:15708460952、电子邮件:zhuwei@duoceshi.com
driver.find_element(By.ID,"userA").send_keys("admin")
driver.find_element(By.ID,"passwordA").send_keys("123456")
driver.find_element(By.CSS_SELECTOR,".telA").send_keys("15708460952")
driver.find_element(By.XPATH,"//*[@class ='emailA dzyxA']").send_keys("zhuwei@duoceshi.com")
sleep(3)
driver.find_element(By.CSS_SELECTOR,".telA").clear() # 清除
sleep(3)
driver.find_element(By.CSS_SELECTOR,".telA").send_keys("17780718285") # send_keys输入
driver.find_element(By.TAG_NAME,"button").click() # click() 点击
19、浏览器操作方法
# 19、浏览器操作方法
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
sleep(2)
# 窗口最大化
driver.maximize_window()
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(2)
# 设置窗口大小
driver.set_window_size(500,500)
sleep(2)
# 设置窗口位置
driver.set_window_position(300,300)
20、浏览器_后退、前进、刷新
# 20、浏览器_后退、前进、刷新
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
sleep(2)
# 窗口最大化
# driver.maximize_window()
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(3)
# 当前页打开新浪
# driver.find_element(By.CSS_SELECTOR,"#linkto>a").click()
# sleep(3)
# # 浏览器后退操作
# driver.back()
# sleep(3)
# # 浏览器前进操作
# driver.forward()
# sleep(3)
# driver.back()
# sleep(4)
# 点击访问新浪新开一个窗口
driver.find_element(By.XPATH,'//*[@id="linkto"]/a[2]').click()
# 关闭一个窗口
# driver.close()
# sleep(2)
#关闭所有的窗口
# driver.quit()
21、获取页面title和URL
# 21、获取页面title和URL
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
sleep(2)
driver.get("http://www.baidu.com")
# 获取title信息
print(driver.title)
# 获取URL地址
print(driver.current_url)
22、获取元素信息
# 22、获取元素信息
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(3)
# 1、获取用户输入框大小
print(driver.find_element(By.ID,'userA').size)
# 2、获取页面上的第一个超链接文本内容
print(driver.find_element(By.LINK_TEXT,"新浪").text)
# 3、获取页面上的第一个超链接的地址
print(driver.find_element(By.LINK_TEXT,"新浪").get_attribute("href"))
23、获取元素信息进行判断
# 23、获取元素信息进行判断
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(3)
# 1、判断页面是否由span标签
print('判断是否有span标签',driver.find_element(By.NAME,"sp1").is_displayed())
# 2、判断是否有取消按钮
print('判断是否有取消按钮',driver.find_element(By.ID,"cancelA").is_enabled())
# 3、判断页面中 旅游 对应的复选框是否选中状态
print('判断页面中 旅游 对应的复选框是否选中状态',driver.find_element(By.ID,"lyA").is_selected())
24、鼠标右击操作
# 24、鼠标右击操作
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(3)
# 创建鼠标对象
action = ActionChains(driver)
# 鼠标右击操作
action.context_click(driver.find_element(By.ID,"userA"))
# 调用鼠标执行方法
action.perform()
25、鼠标双击操作
# 25、鼠标双击操作
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(3)
element = driver.find_element(By.ID,"userA")
element.send_keys("admin")
sleep(3)
# 鼠标s双击操作
# 创建鼠标对象
action = ActionChains(driver)
action.double_click(element)
# 调用鼠标执行方法
action.perform()
26、鼠标拖动操作
# 26、鼠标拖动操作
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"file:///D:/dcs/dcs12/lesson/UI_selenium/pagetest/drag.html") # 通过get方法直接打开测试网站
sleep(3)
scorce = driver.find_element(By.ID,"div1")
target = driver.find_element(By.ID,"div2")
# 创建鼠标对象
action = ActionChains(driver)
# 调用鼠标拖动方法
action.drag_and_drop(scorce,target)
# 调用鼠标执行方法
action.perform()
27、鼠标悬停操作
# 27、鼠标悬停操作
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"file:///D:/dcs/dcs12/lesson/UI_selenium/pagetest/%E6%B3%A8%E5%86%8CA.html") # 通过get方法直接打开测试网站
sleep(3)
element = driver.find_element(By.CSS_SELECTOR,"button")
# 创建鼠标对象
action = ActionChains(driver)
# 调用鼠标悬停方法
action.move_to_element(element)
# 调用鼠标执行方法
action.perform()
28、鼠标元素拖动操作
# 28、鼠标元素拖动操作
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\验证码\index.html") # 通过get方法直接打开测试网站
sleep(3)
element = driver.find_element(By.CSS_SELECTOR,".handler_bg")
# 创建鼠标对象
action = ActionChains(driver)
# 调用鼠标拖动方法
action.drag_and_drop_by_offset(element,265,0)
# 调用鼠标执行方法
action.perform()
29、键盘操作
# 29、键盘操作
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
sleep(3)
# 1、用户输入框输入:admin1 暂停2秒后 删除1
element = driver.find_element(By.ID,"userA")
element.send_keys("admin1")
sleep(2)
element.send_keys(Keys.BACK_SPACE) # 删除最后一个字母
# 2、全选用户名admin
element.send_keys(Keys.CONTROL,"a") # a 代表全选
sleep(3)
# 3、复制admin
element.send_keys(Keys.CONTROL,"c") # c 代表复制
sleep(3)
# 3、粘贴到密码输入框
driver.find_element(By.ID,"passwordA").send_keys(Keys.CONTROL,"v") # v 表示粘贴
30、隐式等待
# 30、隐式等待
# 首先要等待整个页面加载完成,再去进行元素定位,如果在定位过程中找到了元素
# 直接返回该元素,继续后面的操作,如果在指定的之间内没有找到元素,每隔0.5秒再去找,
# 如果超过了指定的时间,就会抛出异常错误
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
import time
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.implicitly_wait(10) # 设置等待的时间 ==》隐式等待
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
# 针对第一个延时框输入:admin
print("开始时间:",time.strftime("%H:%M:%S"))
driver.find_element(By.XPATH,'//div[@id="wait"]/input[1]').send_keys("admin")
print("找到第一个元素时间:",time.strftime("%H:%M:%S"))
# 针对第二个延时框输入:admi2
driver.find_element(By.XPATH,'//div[@id="wait"]/input[2]').send_keys("admin2")
print("找到第二个元素时间:",time.strftime("%H:%M:%S"))
31、显示等待
# 31、显示等待
# 定位指定元素时,如果能找到该元素,那么就直接返回该元素,
# 如果找不到,那么每个指定的时间再去定位该元素,如果超出最长等待时间,
# 那么就会抛出异常
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from selenium.webdriver.support.wait import WebDriverWait # 显示等待方法
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
print("开始时间:",time.strftime("%H:%M:%S"))
# 通过显示等待方法定位延时输入框输入:admin
# 10秒钟内每个1秒去找(//div[@id="wait"]/input[1])元素,当在规定10面时间内找到就进行下一步操作,
# 如果没找到,则会报异常
element = WebDriverWait(driver,10,1).until(lambda x: x.find_element(By.XPATH,'//div[@id="wait"]/input[1]'))
element.send_keys("admin")
print("结束时间:",time.strftime("%H:%M:%S"))
32、强制等待
# 32、强制等待
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.tpshop.com/")
# 先登录
driver.find_element(By.CSS_SELECTOR,".red").click()
# 输入用户名、密码、验证码
driver.find_element(By.CSS_SELECTOR,"#username").send_keys("15708460952")
driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")
driver.find_element(By.CSS_SELECTOR,"#verify_code").send_keys("8888")
driver.find_element(By.CSS_SELECTOR,"#J-login-submit").click()
time.sleep(5) # 强制等待
print("购物车商品数量:",driver.find_element(By.CSS_SELECTOR,"#cart_quantity").text)
33、下拉元素框
# 33、下拉元素框
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select # 导入下拉元素框方法
import time
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
element = driver.find_element(By.CSS_SELECTOR,"#selectA")
Select = Select(element) # 创建Select对象
# 通过select对象根据index选择
time.sleep(2)
Select.select_by_index(2)
# 通过select对象根据value选择
time.sleep(2)
Select.select_by_value("sh")
# 通过select对象根据文本选择
time.sleep(2)
Select.select_by_visible_text("深圳")
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome() # 实例化浏览器对象==》常见浏览器驱动对象 Chrome 首字母大写 后面要跟一个括号
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
time.sleep(3)
# 直接选取下拉元素框的值
driver.find_element(By.CSS_SELECTOR,'[value="sh"]').click()
34、弹出框操作
# 34、弹出框操作
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
time.sleep(3)
# 点击alert 按钮
driver.find_element(By.ID,"alerta").click()
time.sleep(2)
# 处理弹框操作
alert = driver.switch_to_alert()
# 打印信息
print(alert.text)
# 点击确定按钮取消弹框
alert.dismiss()
35、鼠标滚动条操作
# 35、鼠标滚动条操作
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html") # 通过get方法直接打开测试网站
time.sleep(5)
# 定义滑动位置的变量
js = "window.scrollTo(0,2000)"
# 执行
driver.execute_script(js)
36、frame框切换
# 36、frame框切换
# from selenium import webdriver # 导入selenium模块里面的webdriver 方法
# from selenium.webdriver.common.by import By
# import time
# driver = webdriver.Chrome()
# driver.maximize_window()
# driver.get(r"https://mail.163.com/") # 通过get方法直接打开测试网站
# driver.implicitly_wait(10)
# time.sleep(3)
#
# # 进入frame框 switch_to_frame
# iframe = driver.find_element(By.XPATH,'//*[@id="loginDiv"]/iframe[1]')
# driver.switch_to_frame(iframe)
# time.sleep(2)
# driver.find_element(By.NAME,"email").send_keys('15708460952')
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\frameset.html") # 通过get方法直接打开测试网站
time.sleep(3)
# 进入frame框
frame = driver.find_element(By.XPATH,'/html/frameset/frame[1]')
driver.switch_to_frame(frame)
driver.find_element(By.ID,"AuserA").send_keys('15708460952')
# 退出frame框
driver.switch_to_default_content()
time.sleep(3)
# frame = driver.find_element(By.XPATH,'/html/frameset/frame[2]')
driver.switch_to_frame(frame)
driver.find_element(By.ID,"BuserA").send_keys('15708460952')
37、切换窗口
# 37、切换窗口
from selenium import webdriver # 导入selenium模块里面的webdriver 方法
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\page\注册实例.html") # 通过get方法直接打开测试网站
time.sleep(3)
# 点击注册A页面
driver.find_element(By.ID,"ZCA").click()
time.sleep(2)
# 打印当前窗口的句柄值
print(driver.current_window_handle)
# 获取所有页面 句柄值
windows = driver.window_handles
print(windows)
# 根据句柄值切换窗口
driver.switch_to_window(windows[-1])
print(driver.current_window_handle)
# 注册A页面中进行输入用户名
driver.find_element(By.ID,"userA").send_keys("admin")
38、捕获异常、切图保存结果
# 38、捕获异常、切图保存结果
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\注册A.html")
time.sleep(3)
try: # 开启捕获
driver.find_element(By.ID,"userA").send_keys("admin") # 输入用户名
driver.find_element(By.ID,"pasword").send_keys("123456") # 输入密码
except Exception as e: # 捕获所有的异常信息
driver.get_screenshot_as_file("img/error.png") # 切图方法
raise e # 抛出异常
39、验证码处理方式
# 39、验证码处理方式
# 1、去掉验证码 找开发操作===》用在测试环境
# 2、设置万能的验证码(写死的) 找开发操作===》用在测试环境
# 3、验证码识别技术 技术难度高,识别很难达到100% 一般不建议使用
# 4、通过cookie 通过记录cookie来跳过登录操作 ==》接口的鉴权
40、解决注册用例可重复执行的问题
# 40、解决注册用例可重复执行的问题
import random
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 定义获取手机号码的函数
def get_mobile():
mobiles = ['130','131','135','199']
numner = str(int(time.time()))[2:]
mobile = random.choice(mobiles) + numner
return mobile
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get(r"http://www.tpshop.com/index.php/Home/user/reg.html")
time.sleep(3)
driver.find_element(By.ID,"username").send_keys(get_mobile())
driver.find_element(By.NAME,"verify_code").send_keys("8888")
driver.find_element(By.ID,"password").send_keys("123456")
driver.find_element(By.ID,"password2").send_keys("123456")
driver.find_element(By.CSS_SELECTOR,".J_btn_agree").click()
41、上传文件
# 41、上传文件
# 第一种
# from selenium import webdriver
# from selenium.webdriver.common.by import By
# import time
# driver = webdriver.Chrome()
# driver.maximize_window()
# driver.implicitly_wait(10)
# driver.get(r"D:\dcs\dcs12\lesson\UI_selenium\pagetest\upload_file.html")
# time.sleep(3)
# num = driver.find_element(By.ID,"file")
# num.send_keys(r"D:\dcs\dcs12\lesson\UI_selenium\img\error.png")
# 第二种方法
import autoit
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get(r"https://www.baidu.com/")
time.sleep(3)
#点击百度上面的照相机按钮
driver.find_element(By.CSS_SELECTOR,".soutu-btn").click()
# 选择文件设置变量
ele = driver.find_element(By.CSS_SELECTOR,".upload-pic")
# 定义鼠标对象
action = ActionChains(driver)
# 调用鼠标事件
action.click(ele)
# 执行鼠标操作
action.perform()
time.sleep(2)
# 针对windows窗口操作
autoit.win_wait_active("打开",3)
# 再文件选择框输入文件的地址及名称
autoit.control_send("打开","Edit1",r"D:\dcs\dcs12\lesson\UI_selenium\img\error.png")
# 在弹框窗口中点击打开按钮
autoit.control_click("打开","Button1")
time.sleep(3)
42、获取cookie值
# 42、获取cookie值
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get(r"https://www.baidu.com/")
time.sleep(3)
# 获取全部的cookie信息
print(driver.get_cookies())
# 获取单个cookie信息
print(driver.get_cookie("BAIDUID"))
dict_cookie = {
"name":"test_baidu",
"value":"test_value"
}
driver.add_cookie(dict_cookie )
print("-----------------------------")
print(driver.get_cookies())
print(driver.get_cookie("test_baidu"))