python+selenium实现自动化上传后通过接口断言是否成功

        我们在web测试过程中,有些繁琐重复的测试行为完全可以用自动化来代替,例如每次迭代版本发布到线上后,我们可能都需要检查下历史的主要功能,如登录,下载,上传,充值等等,那么这些如果写成自动化脚本,每次检查时自己运行,我们腾出手来做别的是不是更好点呢。本篇文章来分享一下自动化上传,然后通过获取上传请求的响应信息,断言是否上传成功因为我们接口响应是固定的格式,所以可以采用正则表达式的方法

响应值:{\\"content_imgs\\":\\"https://xxxx.zffffo.com/92d03d102d2371ee80020764a3fd0102/snapshots/12d6172a4c3f4c3c850b53bdafb8fc0c-00001.jpg\\",\\"content_video\\":\\"https://xxxx.zffffo.com/sv/36c0ab71-1899bafb2eb/36c0ab71-1899bafb2eb.mp4\\"}"}'

from seleniumwire import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import requests, json
import re # 这里导入re模块,用于处理正则表达式
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select  # 导入selenium库里面的Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys # 导入键盘操作包



# 创建一个浏览器对象
driver = webdriver.Chrome()
# 打开网站
driver.get("https://www.xxxxx.com/") #你要打开的网址
time.sleep(3)# 等待页面加载完成
driver.maximize_window()# 浏览器最大化



login_button = driver.find_element(By.ID, "loginsuccessnews").click()# 点击账号密码登录
login_account =driver.find_element(By.XPATH,"/html/body/div[2]/div/div[2]/div/div[2]/div/div/div/div[1]/div[2]/div").click()
tel = driver.find_element(By.XPATH, "//*[@id='phone']/span").click()
input = driver.find_element(By.XPATH, "//input[@placeholder='请输入手机号']").send_keys('1598888264')
password = driver.find_element(By.XPATH, "//*[@id='password']/span").click()
input = driver.find_element(By.XPATH, "//input[@placeholder='请输入密码']").send_keys('Wzw8264')
# 登录按钮点击
button = driver.find_element(By.XPATH, "//div[@class='login-btn___xEPyC']").click()



#打开上传页面
driver.get('https://www.xxxx.com/upload.html') 
upload =driver.find_element(By.XPATH,"//div[@class='actionBox___376ZY']//div[3]//img[1]").click()
#找到文本输入框并点击
text=driver.find_element(By.XPATH,"//div[@class='tabPane___2ZHsYactive___z3IB1']//div[@class='textWrap___2y7AH']").click()
# 文本框输入内容
input=driver.find_element(By.XPATH,"//div[@class='tabPane___2ZHsYactive___z3IB1']//textarea[@placeholder='请输入正文(500字以内)']").send_keys('随意输入的标题')
# 以下开始上传压缩包
uploadfilebutton = driver.find_element(By.XPATH,"//div[@class='tabPane___2ZHsYactive___z3IB1']//div[@class='uploadName___NmqCM']").click()#视频文件存放地址
file_name = 'C:\\Users\\xxxx\\Desktop\\0e54acffbadd5c73eb86c3a138cd969b.mp4'
driver.find_element(By.XPATH,"//span[@class='ant-upload']//input").send_keys(file_name)# 将压缩包添加至上传窗口  
querenshangchuan = driver.find_element(By.XPATH,"//div[@class='confirmBtn___1sDm3']").click()# 确认上传按钮
publish = driver.find_element(By.XPATH,"//div[@class='confirmBtn___r_eCa']").click()# 点击发布按钮



def Assertion():#创建一个断言方法
    found = False
    entries = driver.requests  # 使用driver.requests属性来获取所有请求信息

    for entry in entries:
        if entry.url == "https://xxxxxx/sssss/adddddd":#接口名称
            response = entry.response  # 这里获取响应对象
            response_body = response.body  # 这里获取响应内容
            response_dict = json.loads(response_body)  # 这里将响应内容转换为字典
            data = response_dict["data"]  # 这里获取data字段的值
            data_dict = json.loads(data)  # 这里将data字段的值转换为字典

            # 定义一个正则表达式,用于匹配以https://xxxx.zffffo.com/开头,以.jpg结尾的字符串
            img_pattern = r"^https://xxxx.zffffo.com/.+\.jpg$"

            # 定义一个正则表达式,用于匹配以https://haokeplay.znzmo.com/sv/开头,以.mp4结尾的字符串
            video_pattern = r"^https://xxxx.zffffo.com//sv/.+\.mp4$"

            # 这里使用in运算符和re.match函数来检查data_dict中是否包含content_imgs和content_video字段,并且它们的值是否符合正则表达式
            if "content_imgs" in data_dict and "content_video" in data_dict and re.match(img_pattern, data_dict[
                "content_imgs"]) and re.match(video_pattern, data_dict["content_video"]):
                print(entry.response.body)
                print("data中包含了content_imgs和content_video字段,上传成功")
            else:
                print("data中没有包含content_imgs和content_video字段,可能上传失败")

            found = True
            return  True
            break
    if not found:
        print("警告:没有找到https://xxxx.zffffo.com/接口的请求和响应信息,请检查")
        return False
        driver.quit()


if __name__ == '__main__':
    if Assertion():
        print('成功')
    else:
        print('失败')
    driver.quit()

#根据自身需要可以无限新增其他场景应用上面的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值