【测开】利用界面化操作存储步骤数据,为 Selenium 自动化测试提效赋能(一)
开篇简介
本篇分享我设计的sqlite数据步骤表结构、以及让selenium4执行的方法;
不当之处请多多指教。
如下是qt界面,执行用例的时候,完成selenium的定位元素、鼠标事件等。
准备
1、selenium知识
selenium是可以模拟人工执行浏览器的库。
selenium4的helloworld.py,python的selenium4库已经不需要单独安装本地驱动了。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
# 使用 WebDriverManager 获取 ChromeDriver 的路径
driver_path = ChromeDriverManager().install()
# 使用 Service 类来传递 ChromeDriver 路径
service = Service(driver_path)
driver = webdriver.Chrome(service=service)
# 步骤1: 打开一个网页
driver.get('https://www.baidu.com/')
# 步骤2: 输入搜索词并点击搜索按钮
search_box = driver.find_element('id', 'kw')
search_box.send_keys('自动化测试')
# 步骤3: 点击提交
search_button = driver.find_element('id', 'su')
search_button.click()
# 等待几秒钟以便查看效果(可选)
import time
time.sleep(5)
# 关闭浏览器
driver.quit()
selenium有很多操作、可以参考selenium整理。
2. pyqt5以及QThread多线程
如下是简单的pyqt5中多线程QThread启用、以及pyqtSignal的使用
- QThred的子类中,run方法,使用子类对象调用start()方法,就可以创建一个多线程来执行run犯法。
- 定义一个信号,在对应的地方发射信号,最后append到文本框
import sys, time
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QVBoxLayout, QWidget,QPushButton
from PyQt5.QtCore import pyqtSignal, QObject, QThread
class SeleniumSignal(QObject):
# 定义一个信号,用于传递字符串信息
message = pyqtSignal(str)
class SeleniumExecutor(QThread):
def __init__(self, signal):
super().__init__()
self.steps = None
self.signal = signal
self.excutor_person = 1
def run(self):
if self.steps: # 确保有步骤需要执行
self.excute()
def excute(self):
self.signal.message.emit(f"{self.excutor_person}开始执行....")
for step in self.steps:
action_name = step['action_name']
self.signal.message.emit(f"{self.excutor_person}正在执行步骤: {action_name}")
time.sleep(1) # 模拟每个步骤之间的延迟
# 这里可以加入实际的步骤执行逻辑
self.signal.message.emit(f"{self.excutor_person}步骤 {action_name} 执行完成")
time.sleep(1) # 模拟每个步骤之间的延迟
self.signal.message.emit(f"{self.excutor_person}所有步骤执行完成")
self.excutor_person = 1 + self.excutor_person
def set_steps(self,steps):
self.steps = steps
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Selenium Executor')
self.resize(800,600)
btn = QPushButton("执行")
btn.clicked.connect(self.run_selenium)
self.text_edit = QTextEdit(self)
self.text_edit.setReadOnly(True)
layout = QVBoxLayout()
layout.addWidget(btn)
layout.addWidget(self.text_edit)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
# 创建信号对象
self.signal = SeleniumSignal()
self.signal.message.connect(self.update_text)
self.signal.message.connect(lambda xx:print(xx))
# 提前实例化SeleniumExecutor对象
self.executor = SeleniumExecutor( self.signal)
# # 初始化,多线程创建dirver
self.executor.start()
def update_text(self, message):
self.text_edit.append(message)
def run_selenium(self):
# 1. 打开百度-搜索-点击
steps = [{'id': 7, 'case_id': 2, 'step_number': 1, 'step_description': None, 'action_type_major': 'browser_operation', 'action_type_minor': 'open_windows', 'action_name': '打开窗口', 'value': 'https://www.baidu.com/', 'locator_type': None, 'locator_value': None, 'show_wait_time': None, 'iswait_find': 1, 'keyword_value': None, 'locator_type2': None, 'locator_value2': None},
{'id': 9, 'case_id': 2, 'step_number': 3, 'step_description': None, 'action_type_major': 'keyboard_operation', 'action_type_minor': 'text_input', 'action_name': '内容输入', 'value': 'ui自动化测试', 'locator_type': '0', 'locator_value': 'kw', 'show_wait_time': None, 'iswait_find': 1, 'keyword_value': None, 'locator_type2': None, 'locator_value2': None},
{'id': 10, 'case_id': 2, 'step_number': 4, 'step_description': None, 'action_type_major': 'mouse_operation', 'action_type_minor': 'mouse_click', 'action_name': '左键点击', 'value': None, 'locator_type': '0', 'locator_value': 'su', 'show_wait_time': None, 'iswait_find': 1, 'keyword_value': None, 'locator_type2': None, 'locator_value2': None},
{'id': 8, 'case_id': 2, 'step_number': 6, 'step_description': None, 'action_type_major': 'wait_operation', 'action_type_minor': 'force_wait', 'action_name': &
原文地址:https://blog.csdn.net/Ataoker/article/details/145255635
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!