2017-02-15 12 views
1

Хорошо, поэтому я использую правило сворачивания в userextension, и по какой-то причине Selenium будет продолжать говорить, что мои метки для моего gotoIF не существуют. Кто-нибудь знает, почему и как я могу решить эту проблему? Язык JS (JavaScript)Правило слияния IDE селена с 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: '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; 
} 
}); 

это сообщения об ошибках, которые я получаю от Селена

[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

Хорошо, так что я не использовал селен с любым другим языком, чем XML так извинения за любые ошибки. Редактирование приветствуется. (это java?)

Вам не нужно указывать как истинные, так и ложные, но я понимаю, что ваш работодатель может быть чем-то конкретным. Вы захотите отделить операторы 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 может проверить, что он был фактически изменен.

+0

Ваш скрипт кажется правильным, хотя вы, кажется, вставили}); command.push ({в одной строке линии и забыл об этом на другом, что бы это исправить). Я проведу это с этой коррекцией. EDIT: новая команда также возвращает ту же ошибку, объявляя, что метка не существует. ярлык для Selenium, сценарий запускает свой курс, но вместо этого игнорирует ярлык, полностью идущий в стрит для моей строки ошибки Click. Может ли быть, что rollup не может использовать команду label? –

+0

Примечание. Я снова попытался представить вашу идею с помощью одной метки и gotoIf, но накопительный продолжайте говорить, что метка не существует.Если я добавлю указанный ярлык в сценарий Selenium, он игнорирует его и переходит к строке ошибки щелчка, несмотря на то, что дает результат «истинный». –

+0

Спасибо, что указали это. Я использовал только селен с xml, поэтому Я все еще учился, я скорректировал свой код, чтобы его лучше отформатировать. Извиняюсь. Итак, вы получаете ту же самую ошибку, что и раньше? – Brainles71

0

В поисках решения этой проблемы я имел, я приземлился на этой записи в блоге:

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

и его автор (Lance Кливленд) любезно ответил на мой вопрос об использовании метки в накопительных (см раздел комментариев). Короче говоря, в словах Lance, проблема заключается в следующем:

You cannot use some of the custom commands in the rollups. It has to do with how the JavaScript is loaded for the custom commands (those are JavaScript as well) and the scope of the variables commands like labels/goto have set.

However, since rollups are JavaScript anonymous functions you can use any JavaScript trickery you’d like to build the rollup. You can simulate your own gotoIf commands using standard JavaScript if commands. Any stored values are in the storedVars array.

Я надеюсь, что это поможет вам.