Selenium Webdriver зацикливается на iframe - PullRequest
1 голос
/ 07 марта 2019

Я пытаюсь создать объект iframe, содержащий список ссылок. Конечная цель - выполнить серию действий, одинаковых для каждой ссылки, которые приведут к загрузке некоторых данных в формате xls.

Для каждой из ссылок в iframe я хочу автоматизировать следующие действия:

  1. нажмите на ссылку
  2. выберите из выпадающего списка вариант получения данных с 1999 года
  3. нажмите на кнопку загрузки в Excel.

Мой код работает для первой из ссылок, но я борюсь с его автоматизацией, чтобы пройти через все ссылки в iframe.

Это код, который работает для первой ссылки:

#this automates the log in
driver.find_element_by_id('user').send_keys('myusername')
driver.find_element_by_id('password').send_keys('mypassword')
driver.find_element_by_xpath('myxpath').click()

#this switches to iframe and clicks on all the links 
driver.switch_to.frame("report-iframe")
driver.find_element_by_tag_name('a').click()

#this performs the required actions for the first link(select drop down, select excel download)  
s= Select(driver.find_element_by_id('start-date'))
s.select_by_value('1999-01-01')

driver.find_element_by_xpath('//*[@id="report-excel-download"]')

wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, 'report-excel-download')))
element.click()

Я хочу автоматизировать этот процесс для всех ссылок в iframe (то есть для каждой из ссылок в iframe, нажмите на ссылку, выберите выпадающий список, нажмите кнопку загрузки данных. Есть ли у кого-нибудь какие-либо советы о том, как сделать это?

Я пытался:

links=[link.get_attribute('href') for link in driver.find_elements_by_xpath('myxpath')]


for l in links:

    #click the link
    driver.find_element_by_tag_name('a').click()

    #select all years
    s= Select(driver.find_element_by_id('report-control-date-start'))
    s.select_by_value('1999-01-01')

    #click download
    driver.find_element_by_xpath('//*[@id="report-excel-download"]')
    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.element_to_be_clickable((By.ID, 'report-excel-download')))
    element.click()

Но это работает только для первой ссылки в iframe, это не работает для всех.

У кого-нибудь есть совет?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...