存储变量、Echo、Alert、PopUp 处理 Selenium IDE

在本教程中,您将学习商店命令、echo 命令以及 alert 和 popup 的处理。 Selenium IDE这些命令共同将固定的录制脚本转换为能够对应用程序在运行时返回的任何内容做出反应的脚本。
⚠️ 关于版本的说明: 以下截图均来自原版 Firefox-插入 Selenium IDE,并且命令使用其驼峰式 Selenese 名称。当前 Chrome, Firefox Edge 扩展程序保持相同的行为,但大多数命令名称都包含空格。地图ping 表格出现在本文末尾附近,所有原始命令和屏幕截图均按发布时的状态保留。
Selenium IDE 变量
商店
将变量存储在 Selenium 我们使用 IDE 商店 命令。下图将值“tutorial”存储到名为“myVariable”的变量中。
要访问变量,只需将其用 ${ … } 符号括起来即可。例如,要将“myVariable”的值输入到“userName”文本框中, Mercury 旅游,在值字段中输入 ${myVariable}。
回显命令 Selenium IDE
存储的变量在被打印之前是不可见的,这就是…… 回音 该命令确实会执行此操作。它会在回放期间将消息写入 IDE 日志窗格,因此这是在构建断言之前确认存储命令是否捕获到预期内容的最快方法。
该命令接受以下两种形式之一:
- 一个字符串字面值。 将文本放入 Target 例如,字段 登录步骤已完成,用于在长脚本中标记检查点。
- 一个变量。 将 ${myVariable} 放入 Target 字段中存储的值会被打印出来,而不是字段名称。
两个习惯使得 echo 命令比乍看之下更有用。在创建变量的 store 命令之后立即打印该变量,这样即使失败也能立即显示出来。 trac将消息添加到捕获操作,而不是二十步之后的断言操作。并在每条消息前加上它所属的步骤,因为日志窗格会将所有命令显示在一个扁平列表中。请注意,echo 命令只会写入日志——它不会更改页面,也不会导致测试失败,因此可以安全地将其永久保留在脚本中。
存储元素呈现
此命令根据指定元素是否存在存储“true”或“false”。以下脚本将布尔值“true”存储到“var1”,将“false”存储到“var2”。为了验证,我们将使用 echo 命令显示 var1 和 var2 的值。 URL 下图所示设置为 Mercury 旅游主页。
商店文本
此命令用于将元素的内部文本存储到变量中。下图将 Facebook 注册页面上 h1 标签的内部文本存储到名为“textVar”的变量中。
由于它是页面上唯一此类元素,因此可以安全地使用“css=h1”作为目标。下图显示了这一点。 Selenium IDE 能够将字符串“Sign Up”保存到“textVar”变量中,因为 echo 正确地打印了它的值。
警报、弹出窗口和多重 Windows
提示框可能是最简单的弹出窗口形式。最常见的 Selenium 处理警报使用的 IDE 命令如下:
| 通知 | 使用 |
|---|---|
|
断言警报 断言不警报 |
检索警报消息并将其与您指定的字符串值进行比对。 |
|
断言警报呈现 断言警报不存在 |
判断是否存在警报 |
| 商店警报 | 检索警报消息并将其存储在您指定的变量中。 |
| 商店警报呈现 | 如果存在警报,则返回 TRUE,否则返回 FALSE。 |
|
验证警报 验证未警报 |
检索警报消息并验证它是否等于您指定的字符串值。 |
|
验证警报存在 验证警报不存在 |
验证是否存在警报 |
使用警报时请记住以下两点:
- Selenium IDE 会自动点击警告窗口的“确定”按钮,因此您将无法看到实际的警告信息。
- Selenium IDE 无法处理在页面 onload() 函数内部触发的警告框。它只能处理页面完全加载后生成的警告框。
在这个例子中,我们使用 storeAlert 命令来展示,即使 Selenium IDE虽然没有显示实际的警报,但仍然能够检索到该消息。
步骤1) In Selenium IDE,设置基本 URL 访问 http://jsbin.com。完整版 URL 网址是 http://jsbin.com/usidix。这些 jsbin 代码片段的年代可以追溯到…… Firefox-插件时代,可能不再有效;任何带有弹出警报按钮的页面都会出现相同的结果。
步骤2) 按照如下所示创建脚本。click 命令指向“Go!”按钮,storeAlert 将消息捕获到 alertMessage 中,echo 将其打印出来。
步骤3) 执行脚本后,不要期望看到实际的警报。下面的日志窗格显示了捕获的消息,即使对话框从未显示。
确认
确认信息是弹出窗口,会提供“确定”和“取消”按钮,而警告信息只提供“确定”按钮。处理确认信息时可使用的命令与警告信息中的命令相同。
- 断言确认 / 断言非确认
- assertConfirmationPresent / assertConfirmationNotPresent
- 商店确认
- 商店确认信息
- 验证确认 / 验证非确认
- verifyConfirmationPresent / verifyConfirmationNotPresent
此外,这些命令还告诉 Selenium 选择哪个按钮,确定还是取消?
- 选择“下一步确认”/ 选择“下一步确认”并等待
- 选择下次确认时取消
请放置这些命令 before 触发确认框的命令,以便 Selenium IDE 会预先知道选择哪个选项。同样,在脚本执行过程中,您不会看到实际的确认框。
让我们测试一个网页,该网页上有一个按钮,其代码用于报告用户是按下了“确定”还是“取消”。
步骤1) In Selenium IDE,设置基本 URL 访问 http://jsbin.com。完整版 URL 是 http://jsbin.com/enifaf。
步骤2) 按照下方所示创建脚本。这次我们先按下“确定”按钮。
步骤3) 执行脚本后,你会发现并没有看到实际的确认信息,但网页仍然会显示是哪个按钮。 Selenium IDE已按下。
步骤4) 将 chooseOkOnNextConfirmation 命令替换为 chooseCancelOnNextConfirmation,然后再次执行脚本。页面现在会显示相反的选项。
多 Windows
如果您点击的链接会打开一个单独的窗口,您必须先发出指令。 Selenium 在旧版 IDE 中,您需要先选中该窗口才能访问其中的元素。在旧版 IDE 中,您使用窗口标题作为定位符。
我们使用 selectWindow 命令在窗口之间切换。
我们将使用链接 http://jsbin.com/ocinaj/1,其标题为“First Window”。该页面上的“here”超链接会在新窗口中打开 Facebook,之后我们进行指示 Selenium IDE 执行以下操作:
- 使用 selectWindow 命令,以窗口标题为定位符,将控制权从父窗口转移到新启动的 Facebook 窗口。
- 请核对新窗口的标题。
- 使用 selectWindow 命令,并将目标设置为“null”,再次选择原始窗口。
- 确认当前选中窗口的标题。
上述计划可转化为此处所示的四步流程。
步骤1) 设置基础 URL 访问 http://jsbin.com。
步骤2) 创建脚本,如下所示。
我们需要暂停命令来等待新启动的窗口加载完毕,然后才能读取其标题。
步骤3) 执行脚本。请注意 测试用例 通过了,这意味着我们能够在窗口之间切换并成功验证它们的标题。
请记住,将 selectWindow 目标设置为“null”会自动选择父窗口——在本例中,即元素“link=here”所在的窗口。
注意: 自本教程创建以来,Facebook 已更改其页面标题。请相应地修改脚本中的预期标题。
现代 Selenium 这些命令的 IDE 等效项
此 Firefox-plugin IDE 已停用 Firefox 已迁移到 WebExtensions 架构,以及当前的 Chrome 浏览器。 Firefox Edge 扩展程序将大多数 Selenese 命令重命名为带空格的形式。其行为未发生改变,因此您只需参考下表即可将上述脚本与当前安装进行比对。
| 本教程中的旧版命令 | 电流 Selenium IDE命令 |
|---|---|
| 商店 | 商店 |
| 回音 | 回音 |
| 存储文本 | 商店文本 |
| storeElementPresent | 存储元素存在(或断言元素存在) |
| assertAlert / verifyAlert | 断言警报/验证警报 |
| 选择确定在下一步确认 | 下次确认时选择确定 |
| 选择下次确认时取消 | 下次确认时选择取消 |
| 选择窗口(标题作为目标) | 选择句柄为 ${handle} 的窗口 |
有两点不同之处值得一提。旧文章中未涵盖的提示符现在有了自己的命令: 请回答下一个提示 在对话框出现之前就计划好回复,并且 webdriver 在可见提示符上作出响应 在已打开的提示符中输入内容。窗口切换不再依赖于页面标题。运行 商店橱窗把手 先获取句柄,然后传递 句柄=${yourHandle} 选择窗口。此更改消除了上述注释中描述的故障模式,即网站只需重命名其页面,脚本就无法找到窗口。官方 Selenium IDE 项目网站 列出所有当前命令。













