UI自动化

 鼠标操作

鼠标右击:action.context_click(driver.find_element(By.ID,"kw"))

双击:action.double_click(driver.find_element(By.ID,"kw"))

鼠标悬停:

action.move_to_element(element)

鼠标滑动验证码:单元素拖动实现步骤

action.drag_and_drop_by_offset(source=element,xoffset=260,yoffset=0)

鼠标拖动事件:两个参数  

source=driver.find_element(By.ID,"div1")
target=driver.find_element(By.ID,"div2")
action=ActionChains(driver)
action.drag_and_drop(source="",target="")

 action.perform()

action.perform()才执行

鼠标右击:action.context_click(driver.find_element(By.ID,"kw"))

import time

from selenium import webdriver

from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

driver=webdriver.Chrome()

driver.maximize_window()
driver.get("https://www.baidu.com/")
action=ActionChains(driver)
#鼠标右击
action.context_click(driver.find_element(By.ID,"kw"))
action.perform()
time.sleep(3)
driver.quit()

鼠标悬停:

action.move_to_element(element)

键盘操作:

下拉框操作:Select类

select.select_by_index(index) 参数 index 表示的 option
select.select_by_value(value) 参数 value 表示的是 option
元属中 value 的属性值
select.select_by_visible_text(visible_text ) 参数 visible_text
表示的是 option 的文本内容。
element = driver.find_element(By.CSS_SELECTOR,
"#selectA")
select = Select(element)
# 通过select对象的index来选择广州
time.sleep(2)
select.select_by_index(2)
# 通过select对象的value来选择上海
time.sleep(2)
select.select_by_value("sh")
# 通过select对象的visible来选择深圳
time.sleep(2)
select.select_by_visible_text("深圳")

弹出框操作:

driver.switch_to.alert 获取弹出框对象
处理弹出框 
alert.text 获取弹出框提示信息
alert.accept() 确定弹出框
alert.dismiss() 取消弹出框

alert = driver.switch_to.alert
# 打印信息,然后取消
print(alert.text)
alert.dismiss()
# 在用户名输入框中输入admin
driver.find_element(By.ID,
'userA').send_keys("admin")

滚动条操作:

1 、定义 js
js = "window.scrollTo(0, 2000)" # 如果想要移动到最下
方, y 值给最大值就可以了。
2 、执行 JS
driver.execute_script(js)
# 控制滚动条到最下方
# 1、定义js
js = "window.scrollTo(0, 2000)"
# 2、执行JS
driver.execute_script(js)

1frame切换

frame 切换实现方法:
driver.switch_to.frame(frame_reference) --> 切换到指定
frame 的方法
frame_reference :可以为 frame 框架的 name id 或者定位
到的 frame 元素
. driver.switch_to.default_content() --> 恢复默认页面方法
driver.switch_to.frame(driver.find_element(By.ID,
"idframe1"))
driver.find_element(By.ID,
"AuserA").send_keys("adminA")
2、多窗口切换
窗口操作的三种方法
获取当前窗口句柄: driver.current_window_handle
获取所有窗口句柄: driver.window_handles 返回的是
一个列表
切换窗口句柄: driver.switch_to.window(window_handle) 
window_handle表示的是要切换到哪个窗口句柄
窗口句柄:由操作系统生成的一串唯 一识别码,是一串字符。
# 回到默认首页面
driver.switch_to.default_content()
# 针对注册用户B输入用户名adminB
ele_frame = driver.find_element(By.ID, "idframe2")
driver.switch_to.frame(ele_frame)
driver.find_element(By.ID,
"BuserA").send_keys("adminB")

多窗口切换:

窗口操作的三种方法
获取当前窗口句柄: driver.current_window_handle
获取所有窗口句柄 : driver.window_handles 返回的是
一个列表
切换窗口句柄 : driver.switch_to.window(window_handle)
window_handle 表示的是要切换到哪个窗口句柄
# 在注册实例页面中点击 注册A页面
driver.find_element(By.ID, "ZCA").click()
time.sleep(1)
# 获取当前窗口句柄信息
print(driver.current_window_handle)
# 获取所有窗口句柄
windows = driver.window_handles
# 切换窗口句柄
driver.switch_to.window(windows[-1])
# 在注册A页中输入用户名和密码
driver.find_element(By.ID,
"userA").send_keys("admin")

窗口截图:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8
%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8
%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%
E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
try:
    # 输入用户名
    driver.find_element(By.ID,
"userA").send_keys("admin")
# 输入密码
    driver.find_element(By.ID,
"padd").send_keys("1234")
except Exception as e:
    driver.get_screenshot_as_file("img/error.png")
2、验证码处理
2.1 什么是验证码?
验证码就是指一种随机生成的信息(数字、字母、汉字、图片、算
术题)等为了防止恶意的请求行为,增加应用的
安全性。
自动化过程中也是需要进行注册或者登陆的操作,所以需要处理验
证码。
2.2 验证码处理方式
去掉验证码 由开发操作 , 用在测试环境
设置万能验证码 由开发 操作, 一般也只使用在测试环境,
验证码识别技术 由于技术难度高,识别率很难达到100%,
一般不建议使用
记录COOKIE 通过记录cookie来跳过登陆的操作。
2.3 Cookie原理
原理:
    raise e
time.sleep(3)
driver.quit()

数据驱动:读取jsonwen文件

读取yaml文件:

 pythom创建excel 文件并写入数据:

import openpyxl

#创建excel并写入数据
def createExcel():
    wk=openpyxl.Workbook()
    sheet=wk.active
    sheet.cell(1,1).value="username"
    sheet.cell(1, 2).value = "password"
    sheet.cell(2, 1).value = "159"
    wk.save("userinfo.xlsx")

if __name__ == '__main__':
    createExcel()

 读取excel文件:

#读取excel 数据
import openpyxl

#创建excel并写入数据
def createExcel():
    wk=openpyxl.Workbook()
    sheet=wk.active
    sheet.cell(1,1).value="username"
    sheet.cell(1, 2).value = "password"
    sheet.cell(2, 1).value = "159"
    wk.save("userinfo.xlsx")

#读取excel 数据
def readExcel(filepath):
    wk=openpyxl.load_workbook(filepath)
    sheet1=wk["Sheet"]
    value=sheet1.cell(1,1).value
    print(value)

    #总行数
    rows=sheet1.max_row
    col=sheet1.max_column
    print(rows,col)

    datalist=[]

    #读取所有数据:
    for row in range(1,rows+1):
        for j in range(1,col+1):
            value=sheet1.cell(row,j).value
            datalist.append(value)
    return datalist


def getExcel(filepath):
    data=readExcel(filepath)
    print(data)

if __name__ == '__main__':
    createExcel()
    readExcel("userinfo.xlsx")

读取CSV文件: 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值