Как вставить значение массива в поиск синтаксиса xpath в Selenium IDE

#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?