проблема отправки параметра в функцию ElementPresent
#1
Отправлено 20 июня 2012 - 07:31
В Selenium IDE есть функция verifyElementPresent к которой можно обратиться из runScript как к selenium.isElementPresent('locator').
Мне это необходимо для выполнения кода storeEval | if (selenium.isElementPresent('ячейка таблицы') == true){'storeAnswC'} else {'logging'} | nextMove
Локатор в представленном выше виде не воспринимается функцией Selenium'a , на что отвечает Threw an exception: missing ) after argument list если делаю так:
if (selenium.isElementPresent('//table[@id='Table2']/tbody/tr/td/table/tbody/tr/td[2]/center/table/tbody/tr[3]/td/table[2]/tbody/tr[3]/td[3]') == true){'storeAnswC'} else {'logging'}
Помогите разобраться как правильно сообщить этот локатор
#2
Отправлено 20 июня 2012 - 08:53
В блоке условия, судя по всему, лишнее "== true", если попробовать так?Мне это необходимо для выполнения кода storeEval | if (selenium.isElementPresent('ячейка таблицы') == true){'storeAnswC'} else {'logging'} | nextMove
if (selenium.isElementPresent('ячейка таблицы')){'storeAnswC'} else {'logging'} | nextMove
#3
Отправлено 20 июня 2012 - 09:46
В блоке условия, судя по всему, лишнее "== true", если попробовать так?
Мне это необходимо для выполнения кода storeEval | if (selenium.isElementPresent('ячейка таблицы') == true){'storeAnswC'} else {'logging'} | nextMoveif (selenium.isElementPresent('ячейка таблицы')){'storeAnswC'} else {'logging'} | nextMove
Нет, все правильно с true. Но на всякий случай проверил, не помогает.
Дело имено в том как правильно написать локатор ячейки таблицы и сообщить в функцию ElementPresent
#4
Отправлено 20 июня 2012 - 10:39
Нет, все правильно с true. Но на всякий случай проверил, не помогает.
Дело имено в том как правильно написать локатор ячейки таблицы и сообщить в функцию ElementPresent
У меня есть примерно такой же тест, выглядит так
[info] Executing: |open | http://сайт/ | | [info] Executing: |storeEval | if (selenium.isElementPresent('//strong/a')) {nextStep='testOK'} else{nextStep='testNotOK'} | test | [info] script is: if (selenium.isElementPresent('//strong/a')==true) {nextStep='testOK'} else{nextStep='testNotOK'} [info] Executing: |gotolabel | ${test} | | [info] Executing: |echo | Не нашел я ничего | | [info] echo: Не нашел я ничего [info] Executing: |STOP | | | [error] Unknown command: 'STOP'
Суть в нахождении имени при авторизации, если пользователь авторизован - пропускаем идем дальше, если нет, проверяем по Xpath элемент и авторизовываемся - как то так.
Работает прекрасно.
Дополнения соответствуюущие конечно же тоже установлены? (goto_sel_ide.js)
Пробуйте локатор изменять, мне кажется проблема именно в его определении, может стоит искать по CSS, LINK или как то иначе
#5
Отправлено 20 июня 2012 - 11:57
Нет, все правильно с true. Но на всякий случай проверил, не помогает.
Дело имено в том как правильно написать локатор ячейки таблицы и сообщить в функцию ElementPresent
У меня есть примерно такой же тест, выглядит так[info] Executing: |open | http://сайт/ | | [info] Executing: |storeEval | if (selenium.isElementPresent('//strong/a')) {nextStep='testOK'} else{nextStep='testNotOK'} | test | [info] script is: if (selenium.isElementPresent('//strong/a')==true) {nextStep='testOK'} else{nextStep='testNotOK'} [info] Executing: |gotolabel | ${test} | | [info] Executing: |echo | Не нашел я ничего | | [info] echo: Не нашел я ничего [info] Executing: |STOP | | | [error] Unknown command: 'STOP'
Суть в нахождении имени при авторизации, если пользователь авторизован - пропускаем идем дальше, если нет, проверяем по Xpath элемент и авторизовываемся - как то так.
Работает прекрасно.
Дополнения соответствуюущие конечно же тоже установлены? (goto_sel_ide.js)
Пробуйте локатор изменять, мне кажется проблема именно в его определении, может стоит искать по CSS, LINK или как то иначе
Спасибо, с подбором другого типа локатора понятно. А какой бы вы выбирали локатор на сайте с табличной версткой на предмет какого либо текста в определенном блоке таблицы ?
#6
Отправлено 21 июня 2012 - 01:32
Спасибо, с подбором другого типа локатора понятно. А какой бы вы выбирали локатор на сайте с табличной версткой на предмет какого либо текста в определенном блоке таблицы ?
Я почти всегда использую Xpath:Position или ID если элементов на странице не много. Если текст на странице уникальный, то можно и по тексту искать. Все зависит от того что надо и проверить что найти
#7
Отправлено 21 июня 2012 - 07:45
В данном примере проблема не в локаторе а в способе записи, надо так:Локатор в представленном выше виде не воспринимается функцией Selenium'a , на что отвечает Threw an exception: missing ) after argument list если делаю так:
if (selenium.isElementPresent('//table[@id='Table2']/tbody/tr/td/table/tbody/tr/td[2]/center/table/tbody/tr[3]/td/table[2]/tbody/tr[3]/td[3]') == true){'storeAnswC'} else {'logging'}
Помогите разобраться как правильно сообщить этот локатор
if (selenium.isElementPresent("//table[@id='Table2']/tbody/tr/td/table/tbody/tr/td[2]/center/table/tbody/tr[3]/td/table[2]/tbody/tr[3]/td[3]") == true){'storeAnswC'} else {'logging'}
Из за того, что вы используете одинаковые внешние и внутренние кавычки селениум думает что вы перечисляете аргументы:
'//table[@id=' - 1 строка
Table2- что то не в кавычках
']/tbody/tr/td/table/tbody/tr/td[2]/center/table/tbody/tr[3]/td/table[2]/tbody/tr[3]/td[3]' - другая строка
#8
Отправлено 21 июня 2012 - 10:57
В данном примере проблема не в локаторе а в способе записи, надо так:
if (selenium.isElementPresent("//table[@id='Table2']/tbody/tr/td/table/tbody/tr/td[2]/center/table/tbody/tr[3]/td/table[2]/tbody/tr[3]/td[3]") == true){'storeAnswC'} else {'logging'}
Из за того, что вы используете одинаковые внешние и внутренние кавычки селениум думает что вы перечисляете аргументы:
'//table[@id=' - 1 строка
Table2- что то не в кавычках
']/tbody/tr/td/table/tbody/tr/td[2]/center/table/tbody/tr[3]/td/table[2]/tbody/tr[3]/td[3]' - другая строка
Спасибо, это помогло :-)
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных