自动化测试工具Selenium IDE

news2024/11/23 19:40:30

简介

Selenium IDE 是实现Web自动化的一种便捷工具,本质上它是一种浏览器插件。该插件支持Chrome和Firefox浏览器,拥有录制、编写及回放操作等功能,能够快速实现Web的自动化测试

使用场景

1、Selenium IDE本身的定位并不是用于复杂的自动化场景,而是用于一些对效率拥有极高要求的简易场景。

2、用于发现BUG,重现BUG,提高沟通效率。

3、提高用例执行效率,提高回归效率。

4、录制功能可以导出代码,节省自动代码编写时间。

下载安装

下载插件


下载路径:https://www.selenium.dev/selenium-ide/


                        

安装浏览器插件 selenium IDE.

以chrome浏览器为例。

1. 打开chrome浏览器

2.打开扩展程序

3.将下载好的selenium IDE插件拖拽到浏览器上

selenium IDE的使用

录制脚本

下面以录制 传智播客 的登录功能为例说明,登录账号:13000000001/caohongxing7604

在弹出窗口中选择“在新项目中录制一个新的用例”

在弹出窗口中,输入要录制的网址:传智播客

点击【ok】后输入要录制的网址

点击【START RECORDING】开始录制

系统会在浏览器中打开你给的网页,点击右上角的【登录】后,输入账户后,点击【确定】完成登录,登录后点击【退出】退出了登录状态

录制完成后点击,停止录制按钮

录制的脚本中的三列:

  • command列,是一个动作,例如:点击、输入等,
  • Target列:是动作操作的对象。例如 id=password,就是找到页面上id为“password”的元素,而linkText=“登录” ,就表示超链接文字为“登录”的元素
  • value列:是动作的参数,例如输入的文本等

回放脚本

回放脚本很简单,点击运行即可。

运行过程中,系统会启动浏览器,执行录制的动作

将测试代码导出成脚本

安装Python环境


下载Python安装包

访问Python官方网站(https://www.python.org/downloads/),根据您的操作系统选择对应的Python安装包进行下载。请确保下载最新稳定版本的Python。

安装Python

下载完成后,运行安装包并按照提示进行安装。在安装过程中,请确保勾选“Add Python to PATH”选项,以便在命令行中直接使用Python命令。

验证Python安装

安装完成后,打开命令行工具(Windows下为CMD或PowerShell,Mac和Linux下为Terminal),输入python --version命令,如果显示Python版本号,则说明安装成功。

使用pip安装Selenium库


打开命令行工具,在命令行中输入以下命令来安装Selenium:

pip install selenium

安装Selenium WebDriver

要使用python脚本调用浏览器执行命令,必须安装Selenium WebDriver。

1.下载地址

https://googlechromelabs.github.io/chrome-for-testing/

选择与您的Chrome浏览器版本相匹配的ChromeDriver进行下载。确保下载与您的操作系统相对应的版本。

2.解压ChromeDriver

下载完成后,将ChromeDriver的压缩包解压到您希望存放的位置。例如,您可以将其解压到chrome浏览器安装的同一目录下,或者解压到一个固定的路径下。

3.配置环境变量(可选)

为了方便使用,您可以将ChromeDriver的路径添加到系统的环境变量中。这样,无论您在哪个目录下运行Python脚本,都可以直接调用ChromeDriver。

4.验证ChromeDriver安装

打开命令行工具,输入chromedriver --version命令,如果显示ChromeDriver的版本号,则说明安装和配置成功。

    

基于python环境Selenium + ChromeDriver使用

打开命令行工具,输入ChromeDriver运行ChromeDriver。

打开pycharm运行python脚本,如根据ip地址批量复制网页序列号:

# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options


class TestCopysn():
    def setup_method(self, method):
        chrome_options = Options()
        chrome_options.add_argument("--ignore-certificate-errors")
        self.driver = webdriver.Chrome(options=chrome_options)
        self.vars = {}

    def teardown_method(self, method):
        self.driver.quit()

    def test_copysn(self, ip_address):
        # Construct URL from IP address
        url = f"https://{ip_address}/"
        self.driver.get(url)
        # Set window size
        self.driver.set_window_size(1198, 652)

        # Adding waits for the elements
        WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located((By.ID, "usrName"))
        ).send_keys("ADMIN")

        WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located((By.ID, "pwd"))
        ).send_keys("PASSWD@1234")

        WebDriverWait(self.driver, 10).until(
            EC.element_to_be_clickable((By.ID, "login_word"))
        ).click()

        WebDriverWait(self.driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, ".systemMenu > .trn"))
        ).click()

        WebDriverWait(self.driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, "#menu_sys_cmpn_overview > .trn"))
        ).click()

        WebDriverWait(self.driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, "#ubb_info_table > tbody:nth-child(3) td"))
        ).click()

        WebDriverWait(self.driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, "#ubb_info_table > tbody:nth-child(3) td"))
        ).click()

        element = WebDriverWait(self.driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, "#ubb_info_table > tbody:nth-child(3) td"))
        )

        actions = ActionChains(self.driver)
        actions.double_click(element).perform()

        # Get the serial number text
        sn_text = WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, "#ubb_info_table > tbody:nth-child(3) td"))
        ).text

        # Write the serial number to sn.txt with IP address
        with open('sn.txt', 'a') as file:  # Use 'a' to append to the file
            file.write(f"{ip_address} {sn_text}\n")


# For running the test directly
if __name__ == "__main__":
    test = TestCopysn()
    test.setup_method(None)
    try:
        # Read IP addresses from ip.txt and process each one
        with open('ip.txt', 'r') as file:
            ip_addresses = file.read().splitlines()

        for ip in ip_addresses:
            test.test_copysn(ip)
    finally:
        test.teardown_method(None)


                        
原文链接:https://blog.csdn.net/Dxy1239310216/article/details/137869987

参考:cselenium IDE自动化测试脚本的实现_其它综合_脚本之家

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2036466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ps:首选项 - 技术预览

Ps菜单:编辑/首选项 Edit/Preferences 快捷键:Ctrl K Photoshop 首选项中的“技术预览” Technology Previews选项卡允许用户启用或禁用一些实验性功能,以测试或使用 Adobe 提供的最新技术。 技术预览 Technology Previews 启用保留细节 2.0…

如何解决浏览器页面过曝,泛白等问题

问题描述,分别对应edge和chrome浏览器这是什么原因?

使用C#禁止Windows系统插入U盘(除鼠标键盘以外的USB设备)

试用网上成品的禁用U盘的相关软件,发现使用固态硬盘改装的U盘以及手机等设备,无法被禁止,无奈下,自己使用C#手搓了一个。 基本逻辑: 开机自启;启动时,修改注册表,禁止系统插入USB存…

字符串函数!!!(续)(C语言)

一. strtok函数的使用 继续上次的学习,今天我们来认识一个新的函数strtok,它的原型是char* strtok(char* str,const char* sep),sep参数指向了一个字符串,定义了用作分隔符的字符合集,第一个参数指定⼀个字符串&#…

DataStream API的Joining操作

目录 Window Join Tumbling Window Join Sliding Window Join Session Window Join Interval Join Window CoGroup Window Join 窗口连接(window join)将两个流的元素连接在一起,这两个流共享一个公共键,并且位于同一窗口。…

从老旧到智慧病房,全视通智慧病房方案减轻医护工作负担

传统的老旧病房面临着诸多挑战。例如,患者风险信息的管理仍依赖于手写记录和人工核查;病房呼叫系统仅支持基本的点对点呼叫,缺乏与其它系统的集成能力;信息传递主要依靠医护人员口头传达;护理信息管理分散且不连贯&…

JavaEE-多线程

前情提要:本文内容过多,建议搭配目录食用,想看哪里点哪里~ PC端目录 手机端目录 话不多说,我们正式开始~~ 目录 多线程的概念进程和线程的区别和联系:使用Java代码进行多线程编程Thread类中的方法和属性线程的核心操作1. 启动…

【mamba学习】(一)SSM原理与说明

mamba输入输出实现与transformer几乎完全一样的功能,但速度和内存占用具有很大优势。对比transformer,transformer存在记忆有限的情况,如果输入或者预测的序列过长可能导致爆炸(非线性),而mamba不存在这种情…

物理网卡MAC修改器v3.0-直接修改网卡内部硬件MAC地址,重装系统不变!

直接在操作系统里就能修改网卡硬件mac地址,刷新网卡mac序列号硬件码机器码,电脑主板集成网卡,pcie网卡,usb有线网卡,usb无线网卡,英特尔网卡,瑞昱网卡全支持! 一键修改mac&#xff0…

百问网全志系列开发板音频ALSA配置步骤详解

8 ALSA 8.1 音频相关概念 ​ 音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理。 ​ 数字音频系…

MySQL本地Windows安装

下载MySQL 官网:MySQL 下载完成后文件 安装类型 选择功能 功能过滤筛选,系统为64位操作系统,所以选【64-bit】,32位可选【32.bit】 下方勾选后自动检查安装环境,如果提示缺少运行库,请先安装VC_redist.x64。…

【Dash】plotly.express 气泡图

一、More about Visualization The Dash Core Compnents module dash.dcc includes a componenet called Graph. Graph renders interactive data visualizations using the open source plotly.js javaScript graphing library.Plotly.js supports over 35 chart types and …

数据结构 之 二叉树功能的代码实现

文章目录 二叉搜索树搜索删除节点二叉树的遍历 代码实现 二叉搜索树 无序树的查找,就是整个遍历,所以时间复杂度为O(N)。为了优化无序查找的时间复杂度,我们把树进行排序,这里引入了二叉搜索树。 二叉搜索树是一个有序树&#xf…

vue el-select下拉框在弹框里面错位,

1&#xff1a;原因是因为 底层滚动条滚动的问题。 2&#xff1a;解决方案 加上这个属性 :popper-append-to-body"false" 和样式 <el-select:popper-append-to-body"false"> </el-select><style> .el-select .el-select-dropdown {t…

数据埋点系列 4|数据分析与可视化:从数据到洞察

在前面的文章中,我们讨论了数据埋点的基础知识、技术实现以及数据质量保证。现在,我们拥有了高质量的数据,是时候深入挖掘这些数据的价值了。本文将带你探索如何通过数据分析和可视化,将原始数据转化为有价值的业务洞察。 目录 1. 数据分析基础1.1 描述性统计1.2 推断统计1.3 相…

Haproxy的配置详解与使用

一、haproxy简介 HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬…

uniapp实现自定义弹窗组件,支持富文本传入内容

1.首先安装vuex 通过此命令安装 ​​npm install vuex --save​​ 创建initModal.js import Vuex from vuex // 自定义弹窗 export default function initModal (v) {// 挂在store到全局Vue原型上v.prototype.$modalStore new Vuex.Store({state: {show: false,title: 标题,c…

【人工智能】深入理解自监督学习中的表征学习与对比学习

我的主页&#xff1a;2的n次方_ 1. 自监督学习 1.1 自监督学习的概念 自监督学习是一种无需大规模标注数据的学习方法&#xff0c;通过构造代理任务&#xff0c;模型可以从数据本身获取监督信号&#xff0c;从而学习有用的特征表征。 1.2 自监督学习的背景与重要性 在当今大…

【C++进阶学习】第十三弹——C++智能指针的深入解析

前言&#xff1a; 在C编程中&#xff0c;内存管理是至关重要的一个环节。传统的手动内存管理方式容易导致内存泄漏、悬挂指针等问题。为了解决这些问题&#xff0c;C引入了智能指针。本文将详细讲解C中智能指针的概念、种类、使用方法以及注意事项。 目录 一、引言 二、智能指…

链表---数据结构-黑马

链表 定义 链表是数据元素的线性集合&#xff0c;其每个元素都指向下一个元素&#xff0c;元素存储上是不连续的。 分类 单向链表&#xff0c;每个元素只知道自己的下一个元素是谁。 双向链表&#xff0c;每个元素知道自己的上一个元素和下一个元素。 循环链表&#xff0c;…