浏览器自动化利器Selenium IDE使用指南

news2025/7/9 6:25:38

文章目录

  • 前言
  • 一、安装及界面
    • 1.1 安装
    • 1.2 界面
  • 二、常用命令
    • 2.1 通用
    • 2.2 表单
    • 2.3 流程控制
  • 三、常用操作
    • 3.1 命令操作
    • 3.2 js脚本
    • 3.3 录制
    • 3.4 导出
  • 四、实际操作例子
    • 4.1 红黑树插入可视化
    • 4.2 github下载
  • 参考

前言

Selenium 是一个浏览器自动化框架,专门为 W3C WebDriver 规范提供了一个与所有主要的 web 浏览器兼容的平台和语言中立的编码接口。github 地址:https://github.com/SeleniumHQ/selenium

Selenium IDE 是作为 Selenium 在浏览器 Firefox 和 Chrome 的插件,用于记录、重放测试脚本,并且脚本也可以导出到 C#,Java,Ruby 或 Python 等编程语言。github 地址:https://github.com/SeleniumHQ/selenium-ide

一、安装及界面

1.1 安装

Chrome 安装: https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd

Firefox 安装:https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/

1.2 界面

在安装完插件后,以Firefox为例,下面是演示界面

selenium_open

新建新的项目demo002后,就是下面界面,最重要的就是下面三个红框内容:命令、目标、值

selenium_content

二、常用命令

所有命令可以通过点击上面Command 下拉框来选择想要的命令。这些命令包括很多assert命令,这些是用来做测试用的,还有一些输入文本,鼠标点击,脚本代码执行控制流命令等等。

所有命令官方文档:https://www.selenium.dev/selenium-ide/docs/en/api/commands,下面会介绍一些常用的命令

2.1 通用

  • click 点击一个元素
  • execute script 执行js脚本,返回数据需要使用 return
  • double click 双击一个元素
  • mouse down/mouse up/mouse over 鼠标按下、抬起、悬停
  • open 打开一个URL
  • send keys 键盘输入

2.2 表单

  • check/uncheck 选择 checkbox/radio
  • type 输入文本
  • select 从下拉菜单中选择一个元素
  • submit 提交表单

2.3 流程控制

  • do/repeat if 创建do循环
  • end 结束 if, while, times 流程控制
  • for each 遍历
  • if/else if/else 条件判断
  • times 循环n次
  • wait for element editable 等待元素可编辑
  • wait for element not present 等待元素不出现在页面上
  • wait for element visible 等待元素可视
  • while 创建循环

三、常用操作

3.1 命令操作

下面是一个例子,使用Selenium IDE通过百度搜索Selenium IDE。通过这个小例子来介绍常用的open/type/click的用法,其它命令需要读文档练习

  • 在输入命令之前需要输入base url,就是想要操作网页的地址

    selenium_base_url

  • 第一个命令一般就是打开网页,需要使用open命令

  • 命令的添加和删除

    • 在Command 直接选择想要的命令,这适用于输入下一条命令
    • 如果想要插入一条,可以在旧命令上右键菜单操作,注意: 插入新命令会在旧命令上方
    • 删除会删除选中的命令

    selenium_insert_delete

  • 使用 type 命令向百度搜索框输入文字,选择type 命令,然后 点击Target 箭头,选择百度界面的文本框,Value输入想要搜索的文字。到这里就可以点击上方的运行按钮测试命令执行了

    selenium_type_run

  • 点击搜索按钮 这就需要click 命令,依旧需要使用Target 箭头点击百度一下这个按钮

selenium_click

  • 最终出现了百度Selenium IDE的搜索结果

selenium_click_run

3.2 js脚本

Selenium IDE 支持执行js脚本,使用 execute script 命令,支持自定义变量,使用变量时需要使用${}包裹。

selenium_js_script

3.3 录制

Selenium IDE 提供录制功能方便命令执行。当点击录制时,会先输入要打开的网站地址,然后会记录操作,这对新手很有帮助。

但是录制功能很有限,它会将你做的操作会记录成命令,但是有一些操作是需要耗时,需要用到命令中的wait等命令等待,录制功能有时候并没有这么智能,能够识别需要等待,所以一般在录制后需要修改录制生成的命令。

还有,录制功能只能重复一遍操作,如果需要重复100次,则需要添加脚本控制。

使用右上角的红色REC开始录制,再次点击结束

selenium_record

3.4 导出

在测试用例上,右键支持导出其他语言的代码,这对做自动化测试很有用

selenium_export

四、实际操作例子

4.1 红黑树插入可视化

  • 脚本

selenium_red_black_tree

  • 执行结果

红黑树InsertCase1

4.2 github下载

目标:通过 github 搜索openjdk stars:>1000的项目,第一页10个下载。
实现:通过Selenium IDE 录制了一些操作, 导出为python 脚本,进行一定修改,使用pytest执行
局限:因为访问github速度太慢,下面的代码时灵时不灵,以后再修改

# 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
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

class TestDemo001():
  def setup_method(self, method):
    self.driver = webdriver.Firefox()
    self.vars = {}
  
  def teardown_method(self, method):
    self.driver.quit()
  
  def test_demo001(self):
    self.driver.get("https://github.com/")
    WebDriverWait(self.driver, 50).until(expected_conditions.element_to_be_clickable((By.NAME, "q")))
    self.driver.find_element(By.NAME, "q").click()
    self.driver.find_element(By.NAME, "q").send_keys("openjdk stars:>1000")

    self.driver.find_element(By.NAME, "q").send_keys(Keys.ENTER)
    time.sleep(5)
    
    self.vars["i"] = self.driver.execute_script("return 1")
    while self.driver.execute_script("return (arguments[0] <= 10)", self.vars["i"]):
      self.driver.find_element(By.CSS_SELECTOR, ".repo-list-item:nth-child(" + str(self.vars["i"]) + ") .v-align-middle").click()
      # time.sleep(5)
      WebDriverWait(self.driver, 50).until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR, ".position-relative > .btn-primary")))
      self.driver.find_element(By.CSS_SELECTOR, ".position-relative > .btn-primary").click()
    
      self.driver.find_element(By.CLASS_NAME, "octicon-file-zip").click()
      time.sleep(1)
      self.vars["i"] = self.driver.execute_script("return arguments[0]+1", self.vars["i"])
      self.driver.execute_script("window.history.back()")
      time.sleep(10)
    # 等待下载完成
    time.sleep(10 * 60)

参考

  1. https://www.selenium.dev/selenium-ide/docs/en/introduction/getting-started

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

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

相关文章

创龙AD+全志T3 TL7606I模块测试

上一篇&#xff1a;创龙AD全志T3 ad_display 开发案例(2) 前 言 本文主要介绍基于全志科技T3(ARM Cortex-A7)处理器的8/16通道AD采集开发案例&#xff0c;使用核芯互联CL1606/CL1616AD芯片&#xff0c;亦适用于ADI AD7606/AD7616。CL1606/CL1616与AD7606/AD7616软硬件兼容。 …

力扣(LeetCode)775. 全局倒置与局部倒置(C++)

模拟 理解题&#xff0c;全局倒置就是不相邻的逆序对&#xff0c;局部倒置就是相邻的逆序对。提示中给出&#xff0c;0<nums[i]<n0 < nums[i] < n0<nums[i]<n &#xff0c;其中 nnums.lengthn nums.lengthnnums.length , numsnumsnums 中的所有整数 互不相…

什么是 rektguy NFT系列?

rektguy 系列是一组闪烁着霓虹灯颜色的饮酒骷髅 该项目背后的团队没有提出路线图或分支项目 艺术家 OSF 已经在 NFT 生态系统中拥有一个成熟的粉丝群体 rektguy NFT系列由 8,814 个 NFT 组成&#xff0c;展示了穿着连帽衫、用瓶子喝水的骷髅。这些人物由深黑色背景上闪烁的霓…

[论文阅读] 颜色迁移-EM概率分割的局部颜色迁移

[论文阅读] 颜色迁移-EM概率分割的局部颜色迁移 文章: Local Color Transfer via Probabilistic Segmentation by Expectation-Maximization,[paper][code(未公开)] 本文目的为: 图像局部颜色迁移. 1-符号说明 在进行本文算法原理说明之前, 先对一些英文缩写进行简单说明: …

一次nacos 导致的 CPU 飙高问题

序 今天下午突然 出现 测试环境 cpu飙高&#xff0c;干到了 60%&#xff0c;其他项目 响应时间明显变长。。。有点吓人&#xff0c;不想背锅 项目背景 出问题的项目是 需要连接各个不同nacos 和不同的 namespace 进行对应操作的 一个项目&#xff0c;对nacos的操作都是httpC…

JavaScript break 、 continue和return 语句介绍

目录 一、Break 1、介绍 2、代码&#xff1a; 3、示例&#xff1a; 二、Continue 1、介绍 2、代码 3、示例 三、break 、continue总结&#xff1a; 代码 示例 四、Return 1、简介 2、语法&#xff1a; 3、代码 4、示例 五、return、break、continue总结 1、re…

02【MyBatis框架的CRUD】

二、MyBatis框架的CRUD 重新搭建一个新的MyBatis环境&#xff0c;进行MyBatis的CRUD测试&#xff1b; 参考&#xff1a;01【MyBatis-快速入门】 2.1 新增 2.1.1 dao接口 package com.dfbz.dao;/*** author lscl* version 1.0* intro:*/ import com.dfbz.entity.Emp;public i…

秒杀系统设计(微服分布式)

流程图(分布式) 例子 现场要卖1000件下面这个婴儿纸尿裤&#xff0c;根据以往这样秒杀活动的数据经验来看&#xff0c;目测来抢这100件纸尿裤的人足足有10万人 问题 高并发 秒杀的特点就是这样时间极短、 瞬间用户量大。 正常的店铺营销都是用极低的价格配合上短信、APP的…

自制操作系统日记(6):静态桌面初步

代码仓库地址&#xff1a;https://github.com/freedom-xiao007/operating-system 简介 在上篇中我们成功的加载跳转执行了C语言的代码&#xff0c;本篇中将跟随书籍&#xff0c;初步展示了一个系统页面的初步界面&#xff0c;看到桌面那刻还是有点意思的 最终结果展示 不多…

贵的键盘就一定好吗?程序员该怎样选择一款适合自己的键盘呢,来这里参考下吧

&#x1f3ac; 博客主页&#xff1a;https://xiaoy.blog.csdn.net &#x1f3a5; 本文由 呆呆敲代码的小Y 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;Unity系统学习专栏 &#x1f332; 游戏制作专栏推荐&#xff1a;游戏制作 &…

唯亚威VIAVIFiberChek Sidewinder光纤手持式检测仪

唯亚威FiberChek Sidewinder 是业界“全功能”手持式检测和分析解决方案&#xff0c;适用于诸如 MPO 等多光纤连接器。唯亚威VIAVI 屡获殊荣的 FiberChek 系列中的这款最新产品提供了一个完全自动化的解决方案&#xff0c;可对 MPO 或其他多光纤连接器中的每条光纤进行检测和分…

C. Peaceful Rooks(并查集找环)

Problem - 1411C - Codeforces 题意: 你会得到一个nn的棋盘。棋盘的行和列从1到n编号。单元格(x,y)位于列号x和行号y的交点上。 车是一个棋子&#xff0c;它可以在一个回合内垂直或水平地移动任何数量的单元。棋盘上有m个车(m<n)&#xff0c;其放置方式是没有一对车互相攻…

空间金字塔池化Spatial Pyramid Pooling

1. 概述 通常在卷积神经网络CNN中主要是由卷积层&#xff08;包括Convolution和Pooling两部分组成&#xff09;和全连接层组成&#xff0c;对于任意一张大小的图片&#xff0c;通常需要通过裁剪或者拉伸变形的方式将其转换成固定大小的图片&#xff0c;这样会影响到对图片的识…

从源码角度分析Mybatis级联映射的实现原理

Mybatis是一个半自动化ORM框架&#xff0c;可以将数据库中的记录转换为java实体对象&#xff0c;但是java实体属性通常采用驼峰命名法&#xff0c;而数据库字段习惯采用下划线分隔命名法&#xff0c;因此需要用户指定java实体属性与数据库表字段之间的映射关系。 mybatis的Mapp…

智慧网格解决方案-最新全套文件

智慧网格解决方案-最新全套文件一、建设背景二、思路架构三、建设方案1、民生管理2、网格化管理3、智慧党建4、网上政务5、综治管理四、获取 - 智慧网格全套最新解决方案合集一、建设背景 在我国现代化转型中&#xff0c;社会环境的复杂性和不确定性增强&#xff0c;传统的基层…

智能合约开发 基于Hardhat(实操)

Hardhat是一个编译、部署、测试和调试以太坊应用的开发环境。 ​ Hardhat内置了Hardhat网络&#xff0c;这是一个专为开发设计的本地以太坊网络。主要功能有Solidity调试&#xff0c;跟踪调用堆栈、 console.log() 和交易失败时的明确错误信息提示等 ​安装 # 创建项目目录 …

TSRFormer:复杂场景的表格结构识别新利器

编者按&#xff1a;近年来&#xff0c;各大企业和组织机构都在经历数字化转型。将文档转换成计算机所能识别的样态&#xff0c;是数字化转型的关键步骤&#xff0c;如何识别出图片中表格具体的结构与内容&#xff0c;并直接提取其中的数据和信息是学术界和工业界共同瞩目的焦点…

C语言操作符大全(建议收藏)

前言 &#x1f496;作者&#xff1a;龟龟不断向前 ✨简介&#xff1a;宁愿做一只不停跑的慢乌龟&#xff0c;也不想当一只三分钟热度的兔子。 &#x1f47b;专栏&#xff1a;C初阶知识点 &#x1f47b;工具分享&#xff1a; 刷题&#xff1a; 牛客网 leetcode笔记软件&#xff…

操作系统4小时速成:进程管理占考试40%,进程状态,组织,通信,线程拥有调度,进程拥有资源,进程和线程的区别

操作系统4小时速成&#xff1a;进程管理占考试40%&#xff0c;进程状态&#xff0c;组织&#xff0c;通信&#xff0c;线程拥有调度&#xff0c;进程拥有资源&#xff0c;进程和线程的区别 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招…

生活中的5 个自动化Python 项目——从初学者到高级(附零基础学习教程)

前言 如果你正在学习 Python&#xff0c;你应该尝试自动化你的日常任务。&#xff08;文末送读者福利&#xff09; 您不仅可以通过实现您已经知道的知识来学习更多 Python&#xff0c;而且最终&#xff0c;您可以看到所有的辛勤工作是如何得到回报的。 最近&#xff0c;由于…