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

 

posted @ 2022-05-13 23:55  在下十九  阅读(269)  评论(0)    收藏  举报