Selenium занимает слишком много времени для загрузки файлов - PullRequest
0 голосов
/ 11 марта 2020

Я использую эту часть своего кода для загрузки некоторых файлов, которые я загружаю, щелкая ссылку с указанным частичным текстом, но даже с моим driver.implicitly_wait(5), драйверу требуется более 2 минут, чтобы проверить и загрузить доступный файлы.

Какой лучший способ pythoni c сделать так же, как приведенный ниже код?

ВАЖНО, иногда доступен только один или два из 4 файлов для скачивания.

driver.find_element_by_xpath('//*[@id="menu"]/li[2]/a').click()
driver.find_element_by_xpath('//*[@id="linkbtconsultar"]/a[1]/span').click()

try:
    driver.find_element_by_partial_link_text('ASD!').click()
except NoSuchElementException:
    return
try:
     driver.find_element_by_partial_link_text('QWE#').click()
except NoSuchElementException:
     return
try:
    driver.find_element_by_partial_link_text('RTY%').click()
except NoSuchElementException:
    return
try:
    driver.find_element_by_partial_link_text('ASD%').click()
except NoSuchElementException:
    return

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Я бы скомбинировал 4 локатора в один, возвратил бы коллекцию элементов, а затем l oop, щелкнув по каждой коллекции.

Примерно так:

driver.find_element_by_xpath('//*[@id="menu"]/li[2]/a').click()
driver.find_element_by_xpath('//*[@id="linkbtconsultar"]/a[1]/span').click()
docs = driver.find_elements_by_xpath('//a[contains(.,'ASD!')] | //a[contains(.,'QWE#')] | //a[contains(.,'RTY%')] | //a[contains(.,'ASD%')]')
for doc in docs:
    doc.click()
    # you probably will need a brief wait here to give the browser time to process each click

Этот код попытается получить все нужные документы и вернуть только те, которые существуют ... но он должен быть немедленным.

0 голосов
/ 11 марта 2020

Вы также можете не использовать Selenium для загрузки файлов и импортировать модуль запросов для этого. Затем вы можете использовать что-то вроде map для загрузки всех файлов одновременно.

try:
    files = driver.find_elements_by_partial_link_text('file or extension')[:4]
except NoSuchElementException:
    return
for file in files:
    file.click()

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