带有gotoIf和label的Selenium IDE汇总规则

时间:2017-02-15 20:36:18

标签: javascript selenium-ide

好的,所以我在userextension中使用汇总规则,由于某种原因,Selenium会继续说我的gotoIF的标签不存在。有谁知道为什么或如何解决这个问题?语言是JS(JavaScript)

var manager = new RollupManager();

manager.addRollupRule({
name: 'FRLanguageCheck'
 , description: 'Check the language to make sure its in french'
 , args: [
 ], commandMatchers: [
 ]
 , getExpandedCommands: function(args) {
 var commands = [];

commands.push({
 command: 'storeTextPresent'
 , target: 'English'
 , value: 'LanguageCheck'
 });
 commands.push({
 command: 'gotoIf'
 , target: '${LanguageCheck}==false'
 , value: 'StepWithWrongLanguage'
 });
commands.push({
 command: 'gotoIf'
 , target: '${LanguageCheck}==true'
 , value: 'StepWithRightLanguage'
 });
 commands.push({
 command: 'label'
 , target: 'StepWithWrongLanguage'
 , value: ''
 });
commands.push({
 command: 'click'
 , target: 'TestLanguageChangeToFrench failed. The site was not in French.'
 , value: ''
 });
 commands.push({
 command: 'label'
 , target: 'StepWithRightLanguage'
 , value: ''
 });
 return commands;
 }
});

这是我从Selenium获得的错误消息

[error] [selblocks] Error @1: [rollup|FRLanguageCheck] Target label 'StepWithRightLanguage' is not found.
[warn] [selblocks] __Stack Trace__
[error] Unexpected Exception: Error: @1: [rollup|FRLanguageCheck] Target label 'StepWithRightLanguage' is not found.. 

2 个答案:

答案 0 :(得分:0)

好的,所以我没有使用除了XML之外的任何其他语言的selenium,所以对任何错误道歉。编辑是受欢迎的。 (这是java吗?)

您不需要同时指定true和false,但我确实理解您的雇主可能会追究某些具体内容。您将要分离gotoIf语句,因为一个语句会隐藏另一个语句。

var manager = new RollupManager();

manager.addRollupRule({
name: 'FRLanguageCheck'
 , description: 'Check the language to make sure its in french'
 , args: [
 ], commandMatchers: [
 ]
 , getExpandedCommands: function(args) {
 var commands = [];

commands.push({
 command: 'storeTextPresent'
 , target: 'English'
 , value: 'LanguageCheck'
 });
commands.push({
 command: 'gotoIf'
 , target: '${LanguageCheck}==false'
 , value: 'StepWithWrongLanguage'
 });
 commands.push({
 command: 'label'
 , target: 'StepWithWrongLanguage'
 , value: ''
 });
commands.push({
 command: 'storeTextPresent'
 , target: 'English'
 , value: 'LanguageCheck'
 });
commands.push({
 command: 'gotoIf'
 , target: '${LanguageCheck}==true'
 , value: 'StepWithRightLanguage'
 });
commands.push({
 command: 'click'
 , target: 'TestLanguageChangeToFrench failed. The site was not in English.'
 , value: ''
 });
commands.push({
 command: 'label'
 , target: 'StepWithRightLanguage'
 , value: ''
 });
 return commands;
 }
});

我建议只有一个gotoIf语句,因为目前只有一个命令。如果您选择使用两个,那么您可能需要向StepWithWrongLanguage添加一串命令,以便在法语中更改语言,然后第二个gotoIf语句可以验证它实际已更改。

答案 1 :(得分:0)

我也找到了这个问题的解决方案,我登陆了这个博客文章:

http://lance.bio/2017/04/18/selenium-ide-rollups-with-arguments/

及其作者(Lance Cleveland)友好地回答了我关于在汇总中使用标签的问题(请参阅评论部分)。简而言之,用兰斯的话说,问题是:

  

您无法在汇总中使用某些自定义命令。它必须   如何为自定义命令加载JavaScript(那些   也是JavaScript)和变量命令的范围如   labels / goto已设置。

     

但是,由于汇总是您可以使用的JavaScript匿名函数   你想要构建汇总的任何JavaScript技巧。您可以   使用标准JavaScript模拟您自己的gotoIf命令   命令。任何存储的值都在storedVars数组中。

我希望这会对你有所帮助。