Как загрузить несколько файлов с сайта, выбирая каждый вариант раскрывающегося списка, используя Selenium в python - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь загрузить несколько файлов с сайта, используя Selenium в python, используя следующий код.

from selenium import webdriver
import pandas as pd
driver = webdriver.Chrome('chromedriver.exe')
driver.maximize_window()
driver.get('https://www10.goiania.go.gov.br/TransWeb/FuncionariosExportarPopUp.aspx?_=1590514086637')
element = driver.find_element_by_id('WebPatterns_wt12_block_wtMainContent_wtcboReferencia')
all_options = element.find_elements_by_tag_name("option")
selectYear = Select(driver.find_element_by_id("WebPatterns_wt12_block_wtMainContent_wtcboReferencia"))
link = driver.find_element_by_id('WebPatterns_wt12_block_wtMainContent_wtbtnGerar')
for option in all_options[:267]:
    print("Value is: %s" % option.get_attribute("value"))
    selectYear.select_by_value(option)
    link.click()
    time.sleep(5000)

Но я получаю эту ошибку и не знаю, как ее решить.

TypeError: argument of type 'WebElement' is not iterable

Я впервые использую селен.

Ответы [ 3 ]

1 голос
/ 26 мая 2020

Для загрузки нескольких файлов с сайта https://www10.goiania.go.gov.br/TransWeb/FuncionariosExportarPopUp.aspx?_=1590514086637 с использованием Selenium и , выбирая каждый вариант из Ссылка вам нужно вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать следующие стратегии локатора :

  • Блок кода:

    driver.get("https://www10.goiania.go.gov.br/TransWeb/FuncionariosExportarPopUp.aspx?_=1590514086637")
    select = Select(WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='WebPatterns_wt12_block_wtMainContent_wtcboReferencia']"))))
    for opt in select.options:
        opt.click()
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@value='Gerar']"))).click()
    
  • Примечание : необходимо добавить следующие импорты:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import Select
    
0 голосов
/ 26 мая 2020

Можете ли вы попробовать присвоить список элементов для all_options списку, чтобы итерация работала. Затем прочтите элементы для l oop.

all_options = []

0 голосов
/ 26 мая 2020

вы пробовали это?

for option in range(len(all_options[:267])):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...