#python #selenium #automation #robotframework
#python #селен #автоматизация #robotframework
Вопрос:
Robotframework-Selenium-PYTHON
Добрый день!
Проблема: я собирался создать скрипт для генерации нескольких транзакций, но проблема в том, что каждый раз, когда тест повторяется, появляется элемент, который увеличивается, и я не смог найти этот элемент
Сценарий 1: при первом запуске это значение элемента
наведите курсор мыши на xpath://b ody/div[4]/div[1]/ div[2]/form[1]/div[1]/ div[1]/ div[1] / div[9]/div[1]/ div[1] /div[1] /div[1]/div[1] / div[1]/ul[1]/li[1]/div[1]/img[1]
Сценарий 2: при втором запуске (повторите тест) теперь это значение элемента
наведите курсор мыши на xpath://body/div[4]/ div[1]/ div[2]/form[1]/div[1]/ div[1]/ div[1] / div[9]/ div[1]/ div[1]/div[1]/div[1]/ div[1]1]/div[1] / div [1]/ul[1] / li[2]/div [1]/img[1]`
Как вы можете видеть, тег li[1] из первого сценария становится li[2] во втором сценарии
Вопрос: Существует ли метод или условие, при котором мы можем выполнить тестовые шаги, если элемент / локатор изменяется или увеличивается? чтобы я мог непрерывно выполнять повторяющийся тест
Спасибо, что помогли с моей проблемой
Ответ №1:
Вы можете просто использовать while
цикл в сочетании с f-strings
для достижения этой цели. Вот как вы это делаете:
from selenium.common.exceptions import NoSuchElementException
xpath_num = 1
while True:
try:
element = driver.find_element_by_xpath(f'//body/div[4]/div[1]/div[2]/form[1]/div[1]/div[1]/div[1]/div[9]/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[{xpath_num}]/div[1]/img[1]')
xpath_num = 1
except NoSuchElementException:
break #Breaks when element is not found
Редактировать:
Чтобы реализовать то же самое в mouseover
методе, попробуйте следующее:
from selenium.webdriver.common.action_chains import ActionChains
xpath_num = 1
while True:
try:
element = driver.find_element_by_xpath(f'//body/div[4]/div[1]/div[2]/form[1]/div[1]/div[1]/div[1]/div[9]/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[{xpath_num}]/div[1]/img[1]')
xpath_num = 1
hover = ActionChains(driver).move_to_element(element)
hover.perform()
except NoSuchElementException:
break #Breaks when element is not found
Комментарии:
1. спасибо за предложение, просто последующий вопрос, как я могу использовать этот метод в тестовом скрипте, например, наведите курсор мыши на него? #новичок
2. Не могли бы вы подробнее рассказать об этом? Кстати, если мой ответ вам помог, пожалуйста, примите мой ответ как лучший ответ.
3. Я имею в виду, куда мне поместить цикл while в сочетании с f-строками, о которых вы упомянули? Должен ли я создать еще один новый файл python и вызвать его в тестовом скрипте?
4. Вы можете добавить его в основной скрипт ur. Просто добавьте все действия, которые вы хотите выполнить с элементом, в
try
блок кода.5. код не работает, появляется предупреждение Не удается найти ссылку ‘find_element_by_xpath’ в ‘driver.py «можете ли вы привести мне пример добавления условия к методу наведения курсора мыши