Я пытаюсь создать объект iframe, содержащий список ссылок. Конечная цель - выполнить серию действий, одинаковых для каждой ссылки, которые приведут к загрузке некоторых данных в формате xls.
Для каждой из ссылок в iframe я хочу автоматизировать следующие действия:
- нажмите на ссылку
- выберите из выпадающего списка вариант получения данных с 1999 года
- нажмите на кнопку загрузки в 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, это не работает для всех.
У кого-нибудь есть совет?
Спасибо!