Selenium IDE:如何在未找到元素或出错时继续脚本

时间:2013-08-21 05:25:51

标签: selenium selenium-ide

我需要你的帮助。我只想在Firefox上继续我的Selenium IDE脚本,即使找不到错误或元素。我正在使用HTML格式的脚本。

8 个答案:

答案 0 :(得分:11)

在下一个命令中使用此元素之前,您必须明确检查元素是否存在(这可能会导致错误并中断脚本的执行)。用户扩展“sideflow”允许在代码中启用条件跳转。

以下是侧流扩展的主页:https://github.com/darrenderidder/sideflow

使用侧流扩展,您可以使用以下代码:

storeElementPresent id=btnRecSearch isPresent
gotoIf  ${isPresent} == false   End
click   id=btnRecSearch 
....
label   End

答案 1 :(得分:2)

如果使用所有verify相关命令,那么如果seleniun IDE找不到元素,则脚本不会停止,但如果使用assert相关命令,那么如果找不到该元素,则脚本将停止通过selenium ide

如果必须使用verifytext命令创建脚本,则运行该脚本,如果未显示元素,则查看脚本不会停止

答案 2 :(得分:1)

你也可以使用插件Selblocks来实现" catch"方法,以便捕获错误并继续脚本。 try / catch / finally块 尝试可以在抛出错误时提供特殊处理,并且可以保证执行例如"清理"逻辑。

catch块指定在try块中抛出错误时该怎么做。也就是说,如果try块中或try块内调用的函数或子函数中的任何语句抛出错误,则控制跳转到匹配的catch块,并清除错误。如果try块中没有抛出错误,则跳过catch块。 Catch通过匹配其错误消息来拦截给定错误,该错误消息被指定为" substring"或者作为/ regular expression /。不提供规范将捕获所有错误。

在try和catch块之后执行finally块。无论是否抛出或捕获错误,它总是执行。即使try或catch块通过" flow change"结束,它也会执行。命令:continue,break,return或exitTest命令。

尝试块可以嵌套。如果内部尝试没有捕获错误,则输入封闭的try / catch。所有嵌套的finally块的内容都保证执行,最里面到最外层 - 再次,即使错误发生在路上。

catch和finally都是可选的,但如果两者都没有提供,则try只是没有效果。

可以在try和endTry上指定可选的标识符,该标识符将被验证以进行正确的配对。

try / catch / finally示例 尝试|外   尝试|内     扔|" blamo"     getEval | alert("此警报不会被执行")   最后     getEval |警报("第一&#34)   ENDTRY |内   赶上| / blamo /     getEval |警报("第二&#34) ENDTRY |外 您可以在此处阅读更多内容http://refactoror.wikia.com/wiki/Selblocks_Reference

答案 3 :(得分:1)

此示例适用于可在Firefox和Chrome上运行的新Selenium IDE版本3。基本前提:

1)存储xpath计数-这样可以保存与变量匹配的元素的计数

store xpath count | xpath=//body[@id='error-page'] | error

2)如果-在这种情况下测试计数大于0

if | ${error} > 0

3)做一些神奇的事情

4)结束

end

Selenium IDE 3 - if element exists example

这是我使用相同示例发布的文章:http://lance.bio/2018/12/21/selenium-ide-if-element-exists/

答案 4 :(得分:0)

Selenium IDE插件更适合录制(即向您显示操作背后的代码);它确实允许一些播放,但这是非常有限的,我不确定它可以让你处理错误。现在,如果您愿意使用实际编程,那么您可以轻松处理错误。例如,在Python中你可以使用这样的东西:

try:
    driver.find_element_by_id("userid").click()
except NoSuchElementException:
    # do something else (close page, give you a warning, etc)

答案 5 :(得分:0)

以下是我解决问题的方法,例如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 option interface

3)重启Selenium IDE

4)使用示例(如普通SELECT)

trySelect | //select | label=regexpi:.*Hey.*

您可以对其他可能失败的命令执行相同的操作,例如click

答案 6 :(得分:0)

  

我只想继续我的Selenium IDE脚本,即使没有发现错误或元素。

使用 Kantu Selenium IDE,现在超级简单:只需使用!errorignore

Store | true | !errorignore

如果您想稍后在脚本中检查是否有错误并对此进行处理,则只需检查!statusOK的值:

If | ${!statusOK} == false |
  echo | handle error here
endIF

答案 7 :(得分:-1)

  1. 在Mozilla浏览器和Selenium IDE中打开一个页面。
  2. 右键单击文本,然后选择waitForElementPresent选项。
  3. 该命令将添加到录制的脚本中。
  4. 一旦元素被验证并出现,下一个命令可以是按用户需要点击或输入,目标将始终是元素ID。