UI自动化、selenium模块使用

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"))

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值