В рамках одного тест-кейса Selenium IDE можно безостановочно повторять ряд шагов до достижения определенного результата:
Добавить в форум десять реплик.
Добавить в корзину двадцать пять товаров.
Удалять из каталога товары до тех пор, пока их не останется сто восемьдесят два.
Код сокращается, а это уже хорошо.
Налаживать такую цикличность надо посредством расширения возможностей Selenium IDE, штатно он такой возможностью не располагает.
Ситуация вкратце описана на wiki.openqa.org (прокрутить до заголовка “Selenium IDE FlowControl”).
.
Не паримся
.
https://addons.mozilla.org/en-US/firefox/addon/flow-control/
- Установить.
- Юзаем.
.
Делаем “своими руками” – Добавить в Selenium IDE расширение .js
.
Файл с расширением функциональности называется goto_sel_ide.js. Его нужно скачать на жесткий диск, да.
Этот же файл, но переименованный, лежит и у меня – function-while.js (если скачал отсюда – смени расширение на ‘js’).
Открыть Selenium IDE > Options > General > Selenium Core extensions (user-extensions.js) > Browse – и указать местоположение файла на диске. ОК.
Для справки: если еще раз нажать Browse и выбрать новый файл, то старый никуда из строки не исчезнет, и будет загружаться при всех последующих запусках.
Если добавить еще один файл, то в указанной строке эти два файла будут разделены запятой с пробелом. Можно добавлять еще много файлов.
А можно и редактировать только один.
.
Перезагрузить Selenium IDE
.
Полностью – выключить и запустить заново.
Под Ubuntu проблем не возникло.
Траблы случились в Windows XP: файл то не подхватывался (сразу при загрузке Selenium выдавал сообщение о том, что первые строки файла содержат ошибку), то всё молча открывалось, но при работе скрипта Selenium выпадал в астрал…
Проблему решал всякими неочевидными способами (слепо и злобно тыкаясь), но в итоге нашел такое решение: переименовал файл из goto_sel_ide.js в goto-sel-ide.js. И все, почему-то, решилось 😦
.
Найти в общем списке новые команды
.
Появляются команды while, whileAndWait, endWhile, endWhileAndWait, label, labelAndWait. Справочной информацией они не снабжены, бо тру-программисты в ней не нуждаются.
Будем использовать while и endWhile.
.
Заюзать в контексте тестирования
.
whileExampleAtForum |
||
Открываем страницу на форуме | ||
open | http://test2.url.com/forum/health/allergies/ | |
storeExpression | Allergies – The Forum | forumTitle |
Сохраняем в переменную количество постов на странице (сейчас их у меня два) |
||
storeText | //div[@class=’total_posts’]/strong | totalPosts |
echo | ${totalPosts} | |
Указываем условие для запуска цикла – повторять до тех пор, пока на странице не появится не меньше семнадцати записей | ||
while | storedVars[‘totalPosts’] <= 17 | |
Нажимаем на первую попавшуюся кнопку Reply | ||
click | //span[@class=’reply_btn ul_comm_button’] | Reply |
waitForElementPresent | //input[@type=’image’ and @src=’/Images/Discussions/green_post_btn.png’ and @name=’btnPost’] | |
Увеличиваем цифру в переменной на одну единицу | ||
storeEval | ${totalPosts}+1 | totalPosts |
заполняем поле обычным текстом плюс добавим указание номера записи (для ориентировки) |
||
type | //textarea[@name=’Post’ and @class=’message-box’] | Inserted reply #${totalPosts} |
clickAndWait | btnPost | |
assertTitle | ${forumTitle} | |
проверяем обновленное количество постов на странице | ||
assertText | //div[@class=’total_posts’] | Total posts: ${totalPosts} |
выход из цикла по достижению условия | ||
endWhile | ||
Выводим сообщение о том, что кейс завершен | ||
getEval | alert(‘Done = 18 replies’) |
Вот и все дела.
Хитрая хитрость
Убийственно простой, бесконечный цикл можно организовать и так: перед цепочкой команд, которые должны выполняться циклично, следует указать особенный ярлык
Вписываем ярлык начала действия | ||
label | startHere |
А после всех хитрых телодвижений, в конце выполнения всех шагов, следует указать команду перехода к ярлыку ‘startHere’.
gotolabel | startHere |
И Selenium послушно перейдет в начало, и начнёт заново выполнять все то, что он только что сделал, и остановить его сможет только насильственная смерть или ошибки при исполнении основных шагов. Например, приложение сдохло, или какой-то локатор показывает не то, что должен был.
Добавляем определенное количество релизов в проекте в Mantis
Надо пояснить:
- у нас в названии каждого релиза есть слово “Update”. Так уже повелось.
- сперва указываю номер релиза, который я хочу создать. Например, №151.
- затем увеличиваю эту цифру на единицу до тех пор, пока цифра не достигнет определенного значения.
- в итоге я хочу увидеть список из релизов до релиза №170. Поэтому в качестве условия завершения цикла я укажу цифру “169”. На последнем рывке Selenium создаст запись про релиз №170.
- поскольку я проигрываю этот скрипт на высокой скорости, клик по линку “Proceed” является обоснованным (это понятно каждому, кто работал с Mantis).
Укажи исходную версию релиза | ||
storeExpression | 151 | updateNumber |
storeExpression | MantisBT | mantisMainTitle |
storeExpression | STSm – MantisBT | projectTitle |
добавляем версию с номером из переменной | ||
type | version | Update ${updateNumber} |
clickAndWait | add_version | |
verifyTitle | ${mantisMainTitle} | |
clickAndWait | link=Proceed | |
verifyTitle | ${projectTitle} | |
Указываем условие окончания цикла | ||
while | storedVars[‘updateNumber’] <= 169 | |
плюсуем цифру версии из переменной | ||
storeEval | javascript:{parseInt(storedVars[‘updateNumber’]) + 1} | updateNumber |
type | version | Update ${updateNumber} |
clickAndWait | add_version | |
verifyTitle | ${mantisMainTitle} | |
clickAndWait | link=Proceed | |
verifyTitle | ${projectTitle} | |
endWhile | ||
Выводим сообщение о готовности | ||
getEval | alert(‘Done!’) |
А можно ли как-то в ide вызвать другой тесткейс и потом после прохождения того кейса, вернуть на начальный?
Кейс можно неоднократно “вызывать” в составе тест-сьюта.
Типа:
/intro.html
/openPage.html
/fillFields.html
/openSecondPage.html
/fillFields.html
/logOut.html
Кейс fillFields.html был использован дважды в ходе прогона тест-сьюта.
Переходы типа GOTO, насколько я знаю, работают в контексте одного кейса. Хотя тут предлагается код, который, вроде бы, должен вызывать тот или иной файл в разных случаях
storeEval |
if ( storedVars['Lang'] == "en" ) {html ='../tests/htmlA.html'}
else if ( storedVars['Lang'] == "de ") {html ='../tests/htmlB.html'}
else if ( storedVars['Lang'] == "da ") {html ='../tests/htmlC.html'} |
html
Не проверял живьем, но уже есть над чем подумать.
Можно ли реализовать цикл if?
Например, если есть кнопка “Войти”, тогда нажимаем ее, иначе нажимаем на “Регистрация”?
Можно.
Вот подробности.
Подскажите, пожалуйста, а как сохранить в переменную значение текстового поля?
Т.е на странице имеется поле “Название:*” id= title. Вот как получить то, что в этом поле написано?
Заранее большое спасибо.
Захват текста:
– storeText
– //укажите тут координаты элемента на странице.
– qwe (произвольное название переменной)
Зрительная проверка захвата в логе:
– echo
– ${qwe}
Команда store содержит много всяких подпунктов. Например, storeValue – сохраняет содержимое обычного текстового поля.
Почему-то в переменной пусто.
storeText
title
recName
а когда хочу вставить для проверки значение в другое текстовое поле, ошибки не выдается,но поле пустое
type
description
${recName}
Изложу мой пример по-другому:
storeText
//span[@class=’blablabla’]
recName
Тут я сохранил текст, который находится в span с классом ‘blablabla’. В коде страницы это выглядит так:
<div class=”abvgd” align=”center”>Наша цена: всего <span class=”blablabla”>$100!</span></div>
Проверку сделайте с помощью echo просто для того, чтобы зрительно убедиться в том, что в переменную действительно сохраняется нужное значение.
Потом уже вставляете содержимое переменной куда будет нужно.
Я только догадываюсь о том, как выглядит тот элемент, из которого вам нужно сохранить содержимое, но могу предположить, что вам следует его указать более точно.
Например:
storeText
//span[@id=’title’]
recName
Я оставил span просто потому, что не знаю, какой именно у вас элемент нужно обработать.
StoreText так и не заработало.
Зато storeValue отработало как надо. Спасибо вам большое. Без вашего блога вообще не знаю, что бы я делала.
Есть маленькое пожелание. Было бы не плохо иметь под рукой примеры использования основных команд Selenium. По типу как вы мне написали в предыдущем комменте.
storeText сохраняет текст, если он там есть. Я не вижу код, который вы тестируете, поэтому более внятно сказать ничего не могу.
Список примеров использования основных команд Selenium вам нужно составить самостоятельно. В этом весь секрет обучения любому делу.
Основных команд у селениума нет 🙂 У него все команды важные, основные, кем-то используются (иначе их не добавляли бы в общий список).
Спрашивайте, если столкнетесь с трудностями. Тогда примеры будут намного полезнее и понятнее.
Если есть ограниченное количество скриншотов (например, пять штук), то можно посредством javascript генерировать случайное число в строго заданом диапазоне, например, 1, или 2, или 3, или 4, или 5.
Сгенерированное число сохраняется в переменную, которую можно использовать для определения, по какому скриншоту тест будет кликать.
Проблему с классом дива решить тоже можно через IF – http://siderulezzz.wordpress.com/2010/08/28/7/
Основная моя проблема в том, что вы спрашиваете об очень точных вещах очень общими словами, и не видя код, и не понимая, как реагирует приложение, я не могу подобрать для вас более внятный ответ.
А куда вам можно прислать код? просто я пыталась вставить пример дива и не вышло.
Ну рандом я использую – это получается как-то запутанно.
Хочется как-то оптимизировать что ли код, чтобы не делать кучи циклов. Есть шанс запутаться в них.
Могу описать алгоритм, но думаю, это будет не намного понятней.
astenix на testitquickly.com
Код кладите в отдельный файл, чтобы сохранились отступы и всякое такое.
Алгоритм тоже давайте. Иногда пара слов проясняют целый документ.
Я отвечу не сразу.
А вы запускаете свои тесты только через Селениум ИДЕ?
Подключила “goto_sel_ide.js” к селениум-серверу
(java -jar selenium-server.jar -userExtensions user-extensions.js).
Запускаю хтмл тесты через селениум-сервер,
но тест останавливается на новых командах “gotolabel”,
пишет “Command execution failure.”.
В этой конфигурации – да, только через IDE.
Selenium RC использую в связке с Java в Eclipse, и там в подобных кунштюках нет необходимости. Там и переходы (вызовы) к определенным методам, и логика “если случится а, тогда сделай б” представлены в полном объеме согласно мощностям и возможностям Java.
столкнулся с такой же проблемой.Возможно ли вообще подключить этот js к серверу для восприятия новых команд?
Нет.
Алексей, подскажите пожалуйста решение следующей проблемы в Selenium IDE.
Делаю следующее:
1) генерирую случайные firstName, lastName, email (firstname@mailinator.com) and passwors.
2) на странице регистрации заполняю все поля сгенерированными значениями
3) регистрация нового пользователя проходит успешно
4) теперь нужно открыть окно mailinator.com – в нем перейти на мой ящик
5) в полученном письме перейти по ссылке и подтвердить регистрацию
6) залогиниться под новым пользователем
Проблема с шагом 4!!!!
Можно ли это вообще сделать средствами IDE и если да то, как?
Заранее спасибо
конечно.
команда ‘open | ваш URL’ открывает новый адрес непосредственно в том окне, в котором вы находитесь.
Спасибо за ответ. Я уже нашел решение)
Важно было вводить ссылку на страницу начиная с [http://]
а я вводил просто [/ ]
поэтому mailinator.com просто добавлялось к текущему адресу [http://текущий адрес/mailinator.com]
Как тестировщик вы понимаете, насколько важно прояснять окружение, в котором что-то “не работает” 🙂
Здравствуйте. Я недавно начала интересоватся Selenium. К сожелению, знаний програмирования у меня нет, вот и возник следующий вопрос – у меня есть такой тест-кейс
open
http://metelyky.blogspot.com/
clickAndWait
css=a.comment-link
selectFrame
comment-editor
type
id=commentBodyField
post
clickAndWait
id=postCommentSubmit
Подскажите пожалуйста как зациклить комментирование.
Уточните, пожалуйста, почему моя статья вам не помогла?
Трудности возникли на этапе “Сохраняем в переменную количество постов на странице”. Не могу понять как мне здать эту переменную
отдельной командой
storeExpression | содержимое_переменной | имя _переменной
как задействовать: ${имя _переменной}
вывод ее содержимого в лог: echo | ${имя _переменной}
“..вывод ее содержимого в лог: echo | ${имя _переменной}” – воот оно! заработало!
спасибо за Ваш труд.
Хорошо. Спасибо
Ребята, хелп!!! у меня задача: сравнить данные двух полей на двух разных страничках. как правильно использовать комманды: storeText, storeTextPresent и check?поле Value надо наполнять?данные не статичные, а формируются динамически в данных полях.
Хорошо поставленный вопрос содержит половину ответа.
Переформулируйте поскорее вопрос, бо не понять ничего.
как используя селениум иде сравнить данные двух полей на двух разных HTML страничках? Что вписывать в поля Command, Target и Value для сравнения?
здравствуйте Алексей! подключаю файл D:\goto-sel-ide.js Selenium ругается [error] Unexpected Exception: fileName -> chrome://selenium-ide/content/tools.js -> file:///D:/goto-sel-ide.js?1331813923966, lineNumber -> 95, // ERROR: Caught exception [unknown command [while]]
заранее спасибо.
Проблему с ошибкой решила – была не верная запись в Target, но тест доходи до команды while и выходит. действия, которые задаю в цикле не выполняются.
Молодцом!
реализовал еще один пример цикла.
selenium.open(“http://meteo.gov.ua/ua/past_ukr/1”);
selenium.select(“name=mouns”, “label=березня”);
selenium.select(“name=year”, “label=2012”);
selenium.click(“name=enter_key_ok”);
String dayy = selenium.getExpression(“1”);
// selenium.while(“${dayy}<= 4");
selenium.select("name=day", "label=" + dayy);
selenium.click("name=enter_key_ok");
String dayy = selenium.getEval(dayy + "+1");
// selenium.endWhile();
интересуют такие вопросы.
1) можно ли про помощи Selenium IDE результаты сохранить в отдельный файл, а не лог файл силениума, если да то какие команды.
2) и 2-й вопрос как сохранить данные из выделенных значений на картинке
http://imageshack.us/f/140/tdtxtforbl.png/ в файл.
предполагаемый вывод результата
2012-03-01 на 03 год. 4.3
2012-03-01 на 06 год. 3
*****
2012-03-01 на 24 год. 4.3
2012-03-02 на 03 год. 4.3
*****
—————
Задача вообще. Скопировать/сохранить всю температуру за определенный месяц в файл для дальнейшей обработки.
// Начальство доверяет только "правильным" сайтам погоды
1) можно ли про помощи Selenium IDE результаты сохранить в отдельный файл, а не лог файл силениума, если да то какие команды.
Нет.
спасибо за ответ выше.
как скопировать в переменные значения температур/текстов после открытия страници по сценарию ниже?
page.open “http://meteo.gov.ua/ua/past_ukr/21”
page.select “name=day”, “label=10”
page.select “name=mouns”, “label=березня”
page.select “name=year”, “label=2012”
page.click “name=enter_key_ok”
что-то не разобрался, пробовал много методов
все “вытянутые” данные потом через echo отправлю в лог, а его потом анализировать буду.
Все, разобрался, спасибо. Помог плагин XPath Checker https://addons.mozilla.org/en-US/firefox/addon/1095 с ним и вашими комментами все получилось.
Добрый день! Подскажите пожалуйста, можно ли, используя данный плагин, реализовать тестирование, например текстового поля, где вводимые в него данные будут содержаться в отдельном файле.
Нет.
Здравствуйте! подскажите, пожалуйста: если при выполнении операций в цикле какая-то операция не прошла, можно ли сделать так, чтобы этот шаг пропускался, и цикл выполнялся дальше, а не прекращал свое выполение.
gotolabel разве что…
Спасибо, за статью. Все очень детально и помогло.
Циклы работают очень медленно, [error] Timed out after 30000. в чем может быть проблема, подскажите пожалуйста. Windows 7 . Файл переименовала в go-to-sel.js
Спасибо.
Неизвестно.
Может, оперативной памяти не хватает.
Может, приложение не отзывается вовремя.
Мало ли…
Алексей, подскажите пожалуйста можно ли при помощи Selenium IDE в Firefox открыть “Новое приватное окно” оно же Private Browsing ?
Нет.
Можно предварительно включить режим приватности глобально в браузере, а потом не забыть его отключить.
Спасибо за ответ.
Такой вариант к сожалению не подходит.
Единственное вразумительное решение найденное на просторах интернета выглядит следующим образом:
“Without knowing much about Selenium RC, you can open Firefox in private browsing mode using -private command line option. Alternatively you could set browser.privatebrowsing.autostart preference to true. I guess that at least one of the two is doable in Selenium RC.”
Но к сожалению относится к Selenium RC.
Возможно ли это как то спроэцировать для ide ?
Открыть браузер в режиме private browsing и включить в нем SeleniumIDE – это не связаные друг с другом операции. Вам это понятно?
Это мне вполне понятно.Берем за основу, что Selenium ide изначально включен, а во время проведения проверок нужно открыть новое окно в режиме приватного просмотра. Далее просто использовать selectWindow. Мне нужно проверить взаимодействие клиента с оператором, и особенность сайта в том что сделать это можно либо если окна клиента и оператора открыты в разных браузерах, либо одно из этих окон открыто в приватном окне.
Здравствуйте, есть такой вопрос: Настроил Цикл на выполнение операций, но иногда операция не проходит, выдается ошибка [error] Element ************** not found и цикл останавливается. Можно ли как-то сделать, чтобы он продолжал выполнение кейса, не обращая внимания на ошибки?
Сергей, это слишком общий вопрос.
Вероятно, необходимый элемент не успевает появиться на странице. Вероятно, он переходит в состояние hidden. Вероятно, его после каких-то операций вообще нет на странице.
Можно ли отключить лог консоли в Selenium IDE? А то при длительной работе цикла, вся системная память сжирается firefox’ом
Нативными средствами – нет.
Если сможете влезть в код Selenium – да.
Не подскажите место расположения файлов selenium ide в случае с firefox’ом?
Вопрос про место, снимается. Вместо него – в какой .js’ке копать сорцы логгера?
Добрый день.
Имеется задача: объявить переменную в переменной.
Есть несколько переменных loc(loc1,loc2,loc3..) и есть переменная i, которой в цикле добавляется единичка. Так вот, нужно сделать так, что бы в цикле к слову ‘loc’ дописывалось значение ${i}, и вытягивалось значение уже объединенной переменной.
Типа ${loc${i}} в результате получаю ‘${loc1}’, а нужно значение этой переменной.
Возможно ли реализовать такую штуку с помощью IDE?
Не понял задачу.
Нужно в цикле перебрать все значения переменных loc, то есть то, что хранится в каждой loc1, loc2, loc3 и т.д.
Серж, задачу-то я понял.
Да, это можно сделать. Можно ли сохранить в третью переменную значение, которое получается из сложения двух переменных?
Но я хочу, чтобы ты сам предложил вариант решения.
Поэтому — снова не понимаю. Переформулируй.
пробовал сохранить значение ${loc${i}}, но селениум увидел только одну переменную и сделал ${loc1}, я подозреваю что можно решить эту задачу с помощью использований масивов – записывать значения loc в массив, а потом выводить как MasLock[${i}] – но как добавлять элементы в массив пока не разобрался, нашел только объявление массивов с элементами arr = new Array(“elem1″,”elem2”, “elem3”). Но такое решение не подходит. Есть еще вариант – использование коллекций – но по ним как-то не много материалов в сети.
В общем, нужно не только сложить название переменной из двух частей, но еще и вытащить из нее значение, что собственно пока и не получается.
а оператор FOR использовать можно в селениуме IDE?
Хм, а действительно… Мне еще не приходилось. Думаю так: если можно написать сниппет на JavaScript, в котором будет использоваться этот оператор, то его можно будет использовать в контексте Selenium IDE без проблем.
Сделаете тест?
День добрый
Вопрос как посчитать количество элементов tr либо a ?
Для чего нужно : Почта сколько писем я не знаю до открытия страницы .
Надо пройти по всем письмам и те которые прочитанные переделать в прочитанные
Непрочитанные в прочитанные .
storeText //div[@class=’total_posts’]/strong totalPosts
echo ${totalPosts}
как получаеться число ?
while storedVars[‘totalPosts’] <= 17
у меня три письмя
storeText
css=table.th tr[bgcolor]
totalMail
echo
${totalMail}
2)Xpath функция count() ?
Да, есть команда countElements или как она там называется. Указываем локатор, сохраняем результат работы в переменную.
Добрый день.
У меня вопрос может конечно не по данной теме.
У меня есть таблица с определенным контентом и у каждой строки есть две кнопки: редактировать и удалить. С по мощью фильтра я нахожу нужную строку и мне нужно ее удалить. Вот в чем вопрос, что делать если эти кнопки зависят от ИД строки?
Отсчитывать строки. Или ориентироваться по их содержимому, вроде assertTextPresent.
Не подскажите как можно реализовать паузу между выплоняемыми коммандами, но не на определенное время а на рандомное в пределах какого-то значения.
Пауза ставится однозначно.
Можно поставить условие waitFor что-нибудь, вроде waitForElementPresent или другое условие. Тогда всё будет работать сразу, как только появляется нужный элемент или текст.
Можно ли организовать цикл в цикле?
while (усовие 1)
while (усовие 2)
endWhile
endWhile
Не усложняйте.
Друзья, подскажите, можно ли с Selenium IDE заполнять автоматом поля в Мозиле? Например на странице есть 100 полей, куда надо вписать 1, и что бы не делать это 100 раз в ручную ввести лишь раз, а программа это сделает сама? Может какие другие программы для таких действий есть?
Можно.
Буду безумно благодарен, если подскажите, где найти такое руководство, что бы все расписанно по пальцам было, а то с Selenium IDE ни капли не знаком… Очень по работе надо автоматом одной цифрой куча полей на страницах в браузере заполнять, заколебывает клацать по сто раз Вставить…
Попробуйте начать с http://selenium2.ru/docs/selenium-ide.html
Или https://www.youtube.com/watch?v=gsHyDIyA3dg
Или http://software-testing.ru/trainings/schedule?task=3&cid=185
Здравствуйте! Друзья, помогите..Может кто знает ответ на вопрос: Если какой-то инструмент поиска картинок с урл (началом) одинаковым, но концами разными?
Т.е. как задать условие грубо говоря чтобы при поиске картинок, он искал только заданное начало урл.
заранее спасибо
Добрый день, скажите а selenium ide может находить ошибки которые выползает в консоле, ну скажет просто выдать алерт о наличии ошибки?
Нет.
Добры день) у меня есть проблема: можно ли прикрепить к тест-кейсу в selenium ide файл который будет содержать н-ое кол-во имейлов, что бы каждый раз при запуске теста для проверки регистрации, автоматически подставлялся новый имейл?
Спасибо
Нет.
Генерировать их перед запуском каждого теста не проще ли будет? Это можно сделать одной строчкой.
Добрый день! А можно, пожалуйста, по-подробнее? Мне необходимо, чтобы в форму регистрации каждый раз вводились новые адреса с разными доменами.
Если их генерировать – http://siderulezzz.wordpress.com/2010/05/03/1-2/
Если “взять список из файла…” – такого не будет.
Добрый день, при запуске тестов из коммандной строки на селениум сервере, где есть “while” вываливается ошибка “Unknown command: ‘while'”. А если запускаю через интерфейс IDE то ошибки такой нет. Как можно обойти или надо убирать все while?
Команда while у Selenium не является базовой, она принесена с расширением https://github.com/davehunt/selenium-ide-flowcontrol
Плагин этот подключается, когда вы загружаете Selenium IDE.
На сервере этой шняги нет, соответственно, все “циклы” просто не работают.
Или придумайте, как загружать это расширение в сервер Selenium, или придется все while удалить, или же тесты нужно будет писать на каком-нибудь языке программирования (вообще другой подход).
спасибо! команда “sendkeys” вроде бы изначально в IDE идет, но из командной строки та же unknown ошибка. я не понимаю на что ее можно поменять в моем случае, есть поле автокомплит, командой sendkeys я посылаю в него 1, на что вываливается список, из которого я уже селектом могу выбрать значение. пробовал type с 1, ничего не получается. подскажите, если знаете, как обойти этот sendkeys, чтобы из командной строки запускаемо было?
Добрый день!
Есть ли в Selenium IDE функция округления? Пробовал использовать функцию toFixed(), но она местами некорректно работает.
Заранее спасибо.
В javascript такое можно сделать.
Добрый день, Алексей! Помогите пожалуйста в решении проблемы в Selenium IDE.
После успешной регистрации, не могу пройти по активационной ссылке, пришедшей на почту. Вот и сам тесткейс:
open
https://mail.yandex.ua/neo2/#inbox
click
css=span.b-messages__firstline
clickAndWait
http://“активационная ссылка” здесь и стопает тест, выводит сообщение “not found”.
clickAndWait
link=Сервис
Заранее спасибо!
Если бы у ссылки было постоянное название, вроде “NazvanyeSsilky”, тогда
click | link=NazvanyeSsilky
Иначе используйте абстракции вроде
click | //a[contains(text(),'activateYourProfile')]
если, конечно, внутри ссылки находятся слова “activateYourProfile”.
Спасибо за ответ! Я прошу прощения, попробовала, но ошибка осталась:
click | //a[contains(text(),’http://mysite.com/index.php?id=46′)] результат: not found
или
click | //a[contains(=,’46’)] | | результат: Invalid xpath [4]: //a[contains(=,’46’)]
вариантов перепробовано много было.
Подскажите, что я не так делаю?
Вы слишком прямо принимаете указания.
‘Contains’ используется для тех случаев, когда в ссылке есть значения, которые постоянно меняются (тот же id),
//a[contains(=,’46’)] |- это явная ошибка, надо //a[contains(text(),’46’)]
Ситуация прояснилась, ссылка задана правильно, ошибки нет. Но Селениум вместо ссылки, упорно видит картинку почты. Та же ситуация на mail и на gmail. Вы никогда с подобным не сталкивались?
Сталкивался, конечно же. Единого решения не существует. Стукнитесь ко мне в скайп, завтра поговорим, если пересечемся.