我需要你的帮助。我只想在 Firefox 上继续我的 Selenium IDE 脚本,即使没有找到错误或元素。我正在使用 HTML 格式的脚本。
7 回答
在下一个命令中使用该元素之前,您必须明确检查该元素是否存在(这可能会导致错误并中断脚本的执行)。用户扩展“sideflow”在您的代码中启用条件跳转。
这是sideflow扩展的主页:https ://github.com/darrenderidder/sideflow
使用 sideflow 扩展,您可以使用如下代码:
storeElementPresent id=btnRecSearch isPresent
gotoIf ${isPresent} == false End
click id=btnRecSearch
....
label End
此示例适用于可在 Firefox 和 Chrome 上运行的新 Selenium IDE 版本 3。基本前提:
1) 存储 xpath 计数——这将保存与变量匹配的元素的计数
store xpath count | xpath=//body[@id='error-page'] | error
2) if -- 在这种情况下测试计数大于 0
if | ${error} > 0
3)做一些神奇的事情
4) 结束
end
这是我使用相同示例发布的一篇文章:http: //lance.bio/2018/12/21/selenium-ide-if-element-exists/
如果您使用所有verify
相关命令,则如果 seleniun IDE 未找到元素,则脚本不会停止,但如果您使用assert
相关命令,则如果 selenium ide 未找到该元素,则脚本将停止
如果必须使用verifytext
命令创建脚本,则运行该脚本并查看如果未显示元素,您的脚本将不会停止
您还可以使用实现“catch”方法的插件 Selblocks 来捕获错误并继续执行脚本。try/catch/finally 块 Try 可以在抛出错误时提供特殊处理,并且可以保证执行例如“清理”逻辑。
如果在 try 块中抛出错误,catch 块指定要做什么。也就是说,如果 try 块中的任何语句,或者从 try 块中调用的函数或子函数中的任何语句抛出错误,则控制跳转到匹配的 catch 块,并清除错误。如果在 try 块中没有抛出错误,则跳过 catch 块。Catch 通过匹配指定为“子字符串”或/正则表达式/的错误消息来拦截给定的错误。不提供规范将捕获所有错误。
finally 块在 try 和 catch 块之后执行。无论是否抛出或捕获错误,它总是执行。即使 try 或 catch 块通过“流更改”命令结束,它也会执行:继续、中断、返回或 exitTest 命令。
Try 块可以嵌套。如果内部 try 没有捕获错误,则输入封闭的 try/catch。所有嵌套的 finally 块的内容都保证执行,从最里面到最外面 - 同样,即使在此过程中发生错误。
catch 和 finally 都是可选的,但如果两者都没有提供,那么 try 根本就没有效果。
可以在 try 和 endTry 上指定一个可选标识符,该标识符将被验证是否正确配对。
try/catch/finally 示例 try|outer try|inner throw|"blamo" getEval|alert("this alert will NOT get executed") finally getEval|alert("1st") endTry|inner catch|/blamo/ getEval| alert("2nd") endTry|outer 你可以在这里阅读更多内容http://refactoror.wikia.com/wiki/Selblocks_Reference
Selenium IDE 插件更多地用于记录(即,向您展示动作背后的代码);它确实允许一些播放,但这非常有限,我不确定它是否可以让您处理错误。现在,如果您愿意使用实际编程,那么您可以轻松处理错误。例如,在 Python 中,您可以使用如下内容:
try:
driver.find_element_by_id("userid").click()
except NoSuchElementException:
# do something else (close page, give you a warning, etc)
这是我解决问题的方法,例如使用SELECT
命令:
我创建了一个trySelect
自定义命令,它的行为与正常命令一样,select
但如果找不到元素,请不要停止测试
1)使用以下代码创建文件'user-extensions.js'
Selenium.prototype.doTrySelect = function(locator,target) {
try {
return Selenium.prototype.doSelect.call(this,locator,target);
} catch(err) { return null; }
};
2)在 Selenium IDE => options => options => general 中:在第三个输入中添加您的“user-extensions.js”文件,如下所示
3) 重启 Selenium IDE
4) 使用示例(如普通的 SELECT)
trySelect | //select | label=regexpi:.*Hey.*
您可以对其他可能失败的命令执行相同的操作,click
例如。
- 在 Mozilla 浏览器和 Selenium IDE 中打开一个页面。
- 右键单击文本并选择
waitForElementPresent
选项。 - 该命令被添加到录制的脚本中。
- 一旦元素被验证并呈现,下一个命令可以是单击或根据用户需要键入,并且目标将始终是元素 ID。