#arrays #selenium #xpath #selenium-ide
#массивы #селен #xpath #selenium-ide
Вопрос:
Я новичок в Selenium, поэтому, возможно, мой вопрос будет нелегко понять 🙂
Я использую Selenium IDE версии 3.17.0. Я пытаюсь проверить, присутствуют ли имена устройств на тестируемой веб-странице. Имена устройств хранятся в массиве:
execute script || return ["Tablet Samsung Galaxy Tablet A 10 1 2019 LTE 32GB","APPLE IPAD 10.2 2019 128GB","APPLE IPAD 10.2 2019 32GB","APPLE IPAD PRO 2018 11 64GB 4G"] || ArrayDevices
После этого я пытаюсь использовать каждое значение из этого массива при поиске в xpath:
for each || ArrayDevices || iterator
verify element present || xpath=//a[@class='name']//span[contains(text(),iterator)]
end
Основная проблема заключается в том, что результат запуска этого скрипта всегда положительный, даже если у меня неверное значение (только для отрицательного теста) в моем ArrayDevice. Все изменится, если я заменю «iterator» из моего синтаксиса xpath определенным неправильным именем, например:
verify element present || xpath=//a[@class='name']//span[contains(text(),"Tablet Samsung Galaxy Tablet A 10 1 2019 LTE 32GB")]
Таким образом, Selenium выдает мне ожидаемый результат «Элемент не найден».
Не могли бы вы, пожалуйста, объяснить мне, что я делаю не так?
Заранее благодарим вас за отзыв!
Комментарии:
1. Я не очень хорошо знаю Selenium IDE, но каков результат, если вы исправите свою 2-ю строку кода с помощью:
verify element present || xpath=//a[@class='name']//span[contains(text(),'${iterator}')]
?2. Привет, E.Wiest! Спасибо за ваш отзыв! Синтаксис, предоставленный вами, работает нормально, но я понял основную суть моей проблемы: я использую функцию «проверить наличие элемента» в цикле, и я не знаю, почему Selenium console предоставляет только последний результат этого запуска. Следовательно, если у меня есть массив из 100 элементов, Selenium console покажет результат «проверить наличие элемента» только для последнего элемента. Это сбило меня с толку, и я подумал, что неправильно использую элемент массива в синтаксисе xpath. Итак, возможно ли каким-то образом увидеть результаты проверки для каждой итерации массива в Selenium console?
Ответ №1:
Я думаю, решение простое. Вместо iterator
того, чтобы писать ${iterator}
внутри xpath элемента verify присутствующую команду — ${ …} — правильный синтаксис переменной Selenium IDE.
Комментарии:
1. Привет, Ральф! Спасибо за ваш отзыв! вы почти правы — мы должны написать ‘$ {iterator}’ в синтаксисе xpath (так же, как сказал Э. Виест в первом комментарии). Сбивает с толку то, что Selenium console показывает только последний результат функции «проверить наличие элемента», используемой в моем цикле. Сначала я этого не заметил, и именно поэтому я подумал, что я пишу неправильное выражение xpath в своей строке кода. Теперь мой вопрос: можно ли увидеть результаты проверки для каждой итерации массива моего цикла в Selenium console?