Selenium IDE的基本使用(循环、参数变量、导出脚本)

一、Selenium IDE的控件

在这里插入图片描述

1、这个是执行多个测试用例的控件,点击它能够执行当前所有的脚本

2、这个是执行单个测试用例的控件,点击它执行当前的脚本
在这里插入图片描述
3、这个是执行脚本的每一个步骤,配合使用debug
在这里插入图片描述
4、这个是调节脚本执行快慢的控件
在这里插入图片描述
5、Log:执行结果会以log日志的方式打印,且精确到每一个子步骤
Reference表示,此次脚本的执行,使用了哪些selenium命令

在这里插入图片描述

二、常用基本操作

1、脚本中添加注释,点击脚本右侧,选择insert new comment,会在上方出现空白行,在command处输入注释内容,命令和注释位置调整,只需要通过鼠标点击拖拽即可
在这里插入图片描述
2、设置断点,选择一条命令,鼠标右键选择Toggle Breakpoint
见上图
3、编辑脚本实现脚本循环操作
<1>先来了解一下脚本的基本属性
(1)command命令
在浏览器元素上执行的实际操作。 如果单击网页上的链接或按钮,则该命令为click,如果要输入,则该命令是type,点击右侧能下拉出所有能执行的命令
在这里插入图片描述
(2)target目标
定位辅助,当seleniumIDE录制脚本时,Target会生成针对当前元素的所有定位方式,可以单击target下拉选框选择元素定位方式
在这里插入图片描述
3、value值
测试时的实际输入参数。
<2>循环操作
在需要循环操作的脚本那一行上面添加三行command,即【insert new comment】,新增三个,
第一行申明一个变量,这里举例:index变量,具体下图所示
在这里插入图片描述
接下来的二、三行,下图所示添加的元素。第二行command,添加一个do,代表循环;第三行command,让变量index自增1
在这里插入图片描述
需要记住,添加了上方循环语句,需要在结尾加入repeat if,代表循环判断,否则do报错;target表示循环条件,这里写的变量首先进入循环是1,每次循环+1,需要注意的是这里的repeat if在下方,表示上面的index=10运行到这里才不执行,因此到第10次执行完了才停止执行,即下方页面跳转到10执行完了才结束,下图所示
在这里插入图片描述
<3>设置变量
(1)在需要设置变量的地方修改value值,其为变量,这里要用表达式形式${index}。
(2)并在上方添加新的command,新增的command,选择execute script;
(3)target填入js代码:return ${index}+1 ,这边返回的是一个循环变量值index+1,再将这个变量值放入到需要变的地方,你可以直接返回一个带中文的变量值,比如:return ‘中文’+new Date().getTime(),表示返回的值为:中文后面加上时间;
(4)value填写变量名称index
填入的内容下图所示
在这里插入图片描述

<4>示例脚本

下面的脚本是实现每一页第一行的进行投诉反馈,其中每执行完第一页,页面跳转至下一页,直至第10页,执行完第10页第一行投诉反馈,关闭浏览器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
<5>导出脚本为java代码
在这里插入图片描述
在这里插入图片描述
// Generated by Selenium IDE
import org.junit.Test;
import org.junit.Before;
import org.junit.After;
import static org.junit.Assert.;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.core.IsNot.not;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Alert;
import org.openqa.selenium.Keys;
import java.util.
;
import java.net.MalformedURLException;
import java.net.URL;
public class TousuTest {
private WebDriver driver;
private Map<String, Object> vars;
JavascriptExecutor js;
@Before
public void setUp() {
driver = new FirefoxDriver();
js = (JavascriptExecutor) driver;
vars = new HashMap<String, Object>();
}
@After
public void tearDown() {
driver.quit();
}
@Test
public void tousu() {
driver.manage().window().setSize(new Dimension(1465, 860));
driver.get(“http://IP地址/”);
driver.findElement(By.cssSelector(".btn")).click();
driver.findElement(By.linkText(“订单管理”)).click();
driver.findElement(By.cssSelector(".level-group:nth-child(4) > .sub-level:nth-child(3) span")).click();
driver.findElement(By.linkText(“投诉详情”)).click();
driver.findElement(By.cssSelector(".u-textarea")).click();
driver.findElement(By.cssSelector(".u-textarea")).sendKeys(“投诉”);
driver.findElement(By.cssSelector(".m-status-button")).click();
{
WebElement element = driver.findElement(By.cssSelector(".m-status-button"));
Actions builder = new Actions(driver);
builder.moveToElement(element).perform();
}
{
WebElement element = driver.findElement(By.tagName(“body”));
Actions builder = new Actions(driver);
builder.moveToElement(element, 0, 0).perform();
}
{
WebElement element = driver.findElement(By.cssSelector(".m-status-button"));
Actions builder = new Actions(driver);
builder.moveToElement(element).perform();
}
{
WebElement element = driver.findElement(By.tagName(“body”));
Actions builder = new Actions(driver);
builder.moveToElement(element, 0, 0).perform();
}
driver.findElement(By.cssSelector(".active span")).click();
driver.findElement(By.cssSelector(".page-warp-nums")).click();
vars.put(“index”, js.executeScript(“return 1”));
do {
vars.put(“index”, js.executeScript(“return arguments[0]+1”, vars.get(“index”)));
driver.findElement(By.cssSelector(".page-warp-nums")).sendKeys(vars.get(“index”).toString());
driver.findElement(By.cssSelector(".page-submit")).click();
driver.findElement(By.linkText(“投诉详情”)).click();
driver.findElement(By.cssSelector(".u-textarea")).click();
driver.findElement(By.cssSelector(".u-textarea")).sendKeys(“投诉”);
driver.findElement(By.cssSelector(".m-status-button")).click();
driver.findElement(By.cssSelector(".active span")).click();
} while ((Boolean) js.executeScript(“return (arguments[0]<10)”, vars.get(“index”)));
driver.close();
}
}

### Selenium IDE 使用教程与操作指南 #### 安装与配置 为了在其他浏览器上运行Selenium IDE测试,确保已安装命令行运行器[^1]。此工具允许用户不仅限于Firefox浏览器内使用Selenium IDE。 #### 创建首个自动化脚本 初次接触Selenium IDE时,可以通过构建一个基础示例来熟悉环境,这一过程类似于编写编程中的“Hello World”,旨在让用户初步感受Selenium IDE的功能特性[^3]。 #### 录制与回放功能 通过Selenium IDE的图形界面可以轻松实现测试场景的录制工作。只需点击记录按钮并执行一系列交互动作——访问网页、填写表单字段或是触发链接跳转等,随后停止录音即可自动生成对应的测试用例。这些录制下来的步骤能够被反复播放用于验证应用的行为一致性。 #### 增强测试逻辑:控制流结构的应用 对于更复杂的业务流程来说,仅依靠线性的指令序列可能无法满足需求。因此掌握如何利用条件判断以及循环语句来增强测试案例显得尤为重要。例如设置if-else分支处理不同的输入情况或者运用while/do...while循环多次迭代特定的操作直到达到预期状态为止[^7]。 #### 数据驱动测试实践 当面对大量相似却又存在细微差异的数据项时(比如注册新账户),参数化技术就派上了用场。借助外部文件导入变量值的方式可以让同一个测试模板适用于多种情形之下而不必重复编码。具体做法是在编辑模式下定位到目标位置然后插入相应的占位符表达式${variableName},之后再配合数据源管理插件完成实际数值填充作业[^8]。 #### 导出代码片段至主流编程语言 除了直接基于内置编辑器维护项目外,还支持一键转换成Python、Java等多种流行开发平台下的原生语法形式以便后续深入定制扩展。这项特性特别适合那些希望从快速原型过渡到长期稳定版本的技术团队采用[^9]。 ```python from selenium import webdriver driver = webdriver.Chrome() driver.get('http://example.com') element = driver.find_element_by_id('searchInput') element.send_keys('test string') # 模拟真实的键盘输入行为而非简单赋值给input field的内容属性 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值