ui自动化方法
html 骨架
css 美化
js 行为
# 导包
# 创建浏览器驱动器对象
# 输出测试的网址url
# 通过 xxx 元素来定位 xx 并且赋值
# 设置打开时间
time.sleep(x)
# 关闭
xx.quit()
==================================================
==================================================
=============================================================== ui自动化01
通过id元素来定位
driver.find_element_by_id('userA').send_keys("admin")
通过name元素来定位
driver.find_element_by_name('userA').send_keys("admin")
通过class元素来定位
driver.find_element_by_class_name('telA').send_keys('18767898767')
通过 tag_name元素(标签名)来定位
driver.find_element_by_tag_name('input').send_keys("admin")
通过超文本链接(a)的全部文本定位
driver.find_element_by_link_text('访问 新浪 网站').click()
定位一组元素 然后用下标输入内容
elements = driver.find_elements_by_tag_name("input")
print(type(elements))
elements[1].send_keys('admin')
elements[2].send_keys('109878976789')
========================================================
========================================================
=============================================================== ui自动化02
# 1) 父类选择器 用户名 admin
driver.find_element_by_css_selector("#pa>input").send_keys("admin")
# 2) 后代选择器 密码 123456
driver.find_element_by_css_selector("body #passwordA").send_keys("123456")
# 1).获取用户名输入框的大小 (.size)
print(driver.find_element(By.ID, "userA").size)
# 2).获取页面上第一个超链接的文本内容 (.text)
print(driver.find_element(By.LINK_TEXT, "新浪").text)
# 3).获取页面上第一个超链接的地址 .get_attribute("属性名")
print(driver.find_element(By.LINK_TEXT, "新浪").get_attribute("href"))
# 4).判断页面中的span标签是否可见
print(driver.find_element(By.NAME, "sp1").is_displayed())
# 5).判断页面中取消按钮是否可用
print(driver.find_element(By.ID, "cancelA").is_enabled())
# 6).判断页面中'旅游'对应的复选框是否为选中的状态
print(driver.find_element(By.ID, "lyA").is_selected())
# 1).最大化窗口
driver.maximize_window()
# 2).暂停3s,设置窗口宽度:500px,高度:700px
driver.set_window_size(500, 700)
# 3).暂停3s,设置窗口位置:x=0px,y=500px
driver.set_window_position(100, 500)
# 4).暂停3s,点击界面 百度 超链接
driver.find_element(By.LINK_TEXT, "打开百度").click()
# 5).暂停3s,返回注册A页面
driver.back()
# 6).暂停3s,前进到百度页面
driver.forward()
# 7).刷新百度页面
driver.refresh()
======================================
======================================
=============================================================== ui自动化03
# 鼠标操作
# 点击操作
driver.find_element(By.ID, "alerta").click()
# 获取弹出对象
alert = driver.switch_to.alert
# 打印弹出框信息
print(alert.text)
# 取消弹出框
alert.dismiss()
# 确认弹出框
# alert.accept()
-------
# 调用鼠标操作方法 悬停操作
action.move_to_element(driver.find_element(By.TAG_NAME, "button"))
-------
# 调用鼠标操作方法 右击操作
action.context_click(driver.find_element(By.ID, "userA"))
-------
# 调用鼠标操作方法 双击操作
action.double_click(driver.find_element(By.ID, "userA"))
------
# 找到源元素(data)和目标元素(data2)
data = driver.find_element(By.ID, "div1")
data2 = driver.find_element(By.ID, "div2")
# 调用鼠标操作方法 拖动操作
action.drag_and_drop(data, data2)
---------
# 找到源元素(data)和目标元素(data2)
data = driver.find_element(By.CLASS_NAME, "handler_bg")
# 调用鼠标操作方法 横向滑动方法
action.drag_and_drop_by_offset(data, 700, 0)
------
# 隐式等待 设置等待时间为10s
driver.implicitly_wait(10)
-----
# 显示等待 设置等待时间为10s
data = WebDriverWait(driver, 10).until(lambda x: x.find_element(By.XPATH, '//*[@id="wait"]/input[1]'))
data.send_keys("admin")
==========
封装显示等待
def get_element(driver, ele_type, ele_value):
"""
:param driver: 浏览器驱动
:param ele_type: 元素的定位方式
:param ele_value: 元素定位方式的值
:return: 返回找到的元素对象
"""
return WebDriverWait(driver, 10).until(lambda x: x.find_element(ele_type, ele_value))
------
# 调用封装好的显示等待方法并执行输入操作
get_element(driver, By.XPATH, '//*[@id="wait"]/input[1]').send_keys("admin")
# 等价
num = get_element(driver, By.XPATH, '//*[@id="wait"]/input[2]')
num.send_keys("admin")
=============================================================== ui自动化04
# 切换到注册A iframe中
driver.switch_to.frame(driver.find_element(By.ID, "idframe1"))
# 注册A中输入操作
driver.find_element(By.ID, "AuserA").send_keys("admin1")
# 回退到默认页面
driver.switch_to.default_content()
---------------
# 切换到注册B iframe中
driver.switch_to.frame(driver.find_element(By.ID, "idframe2"))
# 输入操作
driver.find_element(By.ID, "BuserA").send_keys("admin2")
-------------------
try:
driver.find_element(By.ID, "username").send_keys("13800000001")
driver.find_element(By.ID, "password").send_keys("123456")
# 输入错误的元素定位
driver.find_element(By.ID, "PASSWORD").send_keys("8888")
except Exception as e:
# 如果异常就截图 保存到当前路径 img(必须存在)中 截图后缀必须是.png
driver.get_screenshot_as_file("./img/error.png")
--------------------------------
# 获取指定的cookie信息
print(driver.get_cookie('is_mobile'))
# 获取所有的cookie信息
print(driver.get_cookies())
# 定义要添加的cookie
data = {
"name": "A",
"value": "bbbbb"
}
# 添加tookie操作
driver.add_cookie(data)
# 再次打印所有的cookie信息
print(driver.get_cookies())
----------------------
# 保存的cookie值
baidu_cookie = {
"name": "BDUSS",
"value": "tPRURVUTNxeH5TanNpdW1lMGNKbDJPREwxejN5YWF-RHc2flpiR1NrSGZvYVZpSUFBQUFBJCQAAAAAAAAAAAEAAADKuHfNsKG3vbzTwcu3qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8UfmLfFH5icW"
}
from selenium import webdriver
driver = webdriver.Chrome()
# 最大化
driver.maximize_window()
driver.get("https://www.baidu.com/")
# 保存的cookie添加到浏览器中
driver.add_cookie(baidu_cookie)
# 刷新页面
driver.refresh()
--------------------------
input标签可以使用这种方法
# 切换头像上传的iframe中
time.sleep(3)
driver.switch_to.frame(driver.find_element(By.ID, "layui-layer-iframe1"))
time.sleep(2)
# 通过send_keys上传文件 输入天机文件的路径
driver.find_element(By.XPATH, '//*[@id = "filePicker"]/div/input').send_keys(
r"C:\Users\Administrator\Desktop\照片保存\222.png")
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="uploader"]/div[1]/div[3]/div[3]').click()
time.sleep(1)
# 回退到默认页面
driver.switch_to.default_content()
driver.find_element(By.CSS_SELECTOR, '[value = "确认保存"]').click()
-----------------------
# 使用工具定位title
# 获取windos窗口对象 传入title 和 最长响应时间
autoit.win_wait_active('打开', 3)
time.sleep(1)
# 输入title 输入框的name 文件路径
autoit.control_send("打开", "Edit1", r"C:\Users\Administrator\Desktop\照片保存\1.png")
time.sleep(2)
# 点击打开按钮
autoit.control_click('打开',"Button1")
time.sleep(1)
# 点击确认使用按钮
driver.find_element(By.XPATH, '//*[@id="uploader"]/div[1]/div[3]/div[3]').click()
# 回退到默认页面
driver.switch_to.default_content()