0


一个基于selenium的检测页面脚本

最近一个新的视频项目上线,上线后发现有部分视频在切片播放时,加载报错,需要测试人员看看都有哪些视频存在加载问题,但视频数量较多,手工一个一个点指定有点累挺,遂想起了selenium,着手写了一个脚本代替手动执行

分析:

首先分析获取视频播放地址

发现地址都是https://www.xxx.com/video/d-前缀后面拼接视频ID,数据库中查找所有视频ID,拼接成播放地址,并整理成.xlsx文件

调用openpyxl库打开xlsx,读出地址

图片

然后写selenium脚本
遍历文件,找到url,调用selenium,启动webdriver访问浏览器等待加载成功

加载成功后判断页面是否有播放按钮,若是没有,执行截图操作,保存到err_image文件夹中,打印错误地址

图片

运行结束后可在文件夹中查看错误截图

图片

详细代码如下:

import os
import time
import unittest
from selenium 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
from selenium.common.exceptions import TimeoutException
from openpyxl import load_workbook
'''
当前脚本是在浏览器中打开aaa.xlsx文件中的视频地址,进行访问,等待加载完成后查找视频播放按钮
如果找不到就截图当前页面存放到err_image文件夹中,并打印错误地址
'''

class Vedio(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.driver = webdriver.Chrome()
cls.driver.implicitly_wait(1) # 隐式等待
cls.driver.maximize_window()

def testImage(self):
    excel_file_path = 'aaa.xlsx'

    # 读取Excel文件
    workbook = load_workbook(excel_file_path)
    sheet = workbook.active

    # 设置截图保存路径
    image_folder = 'err_image'
    if not os.path.exists(image_folder):
        os.makedirs(image_folder)

        # 遍历Excel表格中的链接地址
    row_offset = 1  # 起始行
    for row in sheet.iter_rows(min_row=row_offset, values_only=True):
        link = row[0]  # 链接在第一列,根据实际情况调整列索引
        print(link)
        if link:  # 确保链接不为空
            try:
                # 打开链接
                self.driver.get(link)

                # 设置显式等待时间
                wait_time = 3  # 秒

                try:
                    # 等待特定div元素出现
                    WebDriverWait(self.driver, wait_time).until(
                        EC.presence_of_element_located((By.CLASS_NAME, 'outter'))
                    )
                    # 如果找到了元素,可以选择不截图或者执行其他操作
                    # 这里我们找到元素后不需要截图,直接继续循环
                    continue  # 跳过截图部分
                except TimeoutException:
                    # 如果超时未找到元素,则进行截图
                    print("Element not found, taking screenshot.")

                    # 截图并保存
                    screenshot_path = os.path.join(image_folder, f"{int(time.time())}.png")
                    self.driver.save_screenshot(screenshot_path)
                    print(f"Screenshot saved for link: {link}")

            except Exception as e:
                print(f"Error accessing link {link}: {e}")

@classmethod
def tearDownClass(cls) -> None:

    # time.sleep(2)  
    cls.driver.quit()  # 调用quit方法

if name == 'main':
unittest.main()

个人观点,仅供参考


本文转载自: https://blog.csdn.net/weixin_58657548/article/details/143239100
版权归原作者 尘心软测技术 所有, 如有侵权,请联系我们删除。

“一个基于selenium的检测页面脚本”的评论:

还没有评论