好的,所以我在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..
答案 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数组中。
我希望这会对你有所帮助。