Список циклов в Python Selenium

#python #selenium #loops #for-loop

#python #selenium #циклы #для цикла

Вопрос:

У меня есть главная страница, где есть ссылки на 5 других страниц со следующими xpaths от tr[1] до tr [5].

 /html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[1]/td[3]/div[1]/a
/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[2]/td[3]/div[1]/a
/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[3]/td[3]/div[1]/a
/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[4]/td[3]/div[1]/a
/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[5]/td[3]/div[1]/a
  

Внутри каждой страницы у меня есть следующие действия:

 driver.find_element_by_name('key').send_keys('test_1')

driver.find_element_by_name('i18n[en_EN][value]').send_keys('Test 1')

# and at the end this takes me back to the main page again
driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[3]/div/ul/li[2]/a').click()
  

Как я могу выполнить итерацию, чтобы скрипт прошел все 5 страниц и выполнил вышеуказанные действия. Пробовал для цикла, но, думаю, я сделал это неправильно … любая помощь была бы очень признательна.

Комментарии:

1. что вы пробовали? поделитесь некоторым кодом

Ответ №1:

Вы можете попробовать это:

 xpath = '/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[{}]/td[3]/div[1]/a'

for i in range(1, 6):
    driver.find_element_by_xpath(xpath.format(i)).click()
  

Ответ №2:

похоже, я понял это, так что вот ответ, который работает для меня сейчас.

 wls = ['/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[1]/td[3]/div[1]/a',
       '/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[2]/td[3]/div[1]/a',
       '/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[3]/td[3]/div[1]/a',
       '/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[4]/td[3]/div[1]/a',
       '/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[5]/td[3]/div[1]/a']

for i in wls:
    driver.find_element_by_xpath(i).click()
  

Ответ №3:

ниже

 template = '/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[{}]/td[3]/div[1]/a'
for x in range(1,6):
    a = template.format(x)
    print(a)
    # do what you need to do with the 'a' element.
  

вывод

 /html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[1]/td[3]/div[1]/a
/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[2]/td[3]/div[1]/a
/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[3]/td[3]/div[1]/a
/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[4]/td[3]/div[1]/a
/html/body/div[3]/div[2]/div/div[5]/div/div[2]/table/tbody/tr[5]/td[3]/div[1]/a