Команда quit не работает после запуска задач автоматической загрузки селен - PullRequest
0 голосов
/ 08 октября 2019

«driver.quit ()» не работает, когда я запускаю задачу автоматической загрузки в селене, но если в браузере нет задачи загрузки, команда quit по-прежнему работает.

Я бы это сделалбудь то выйдите из браузера после завершения загрузки, чтобы перезапустить браузер и затем запустить цикл загрузки пакетов файлов.

Я использую последнюю версию geckodriver v0.25.0 (mac-version) и Firefox <69.0.1>


Вот мой код:

profile = webdriver.FirefoxProfile()

profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.dir', os.getcwd())
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf')

profile.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf")
profile.set_preference("pdfjs.disabled", True)
profile.set_preference("browser.download.manager.closeWhenDone", True)

driver = webdriver.Firefox(firefox_profile=profile)

driver.implicitly_wait(10)

driver.get("https://static.mozilla.com/foundation/documents/mf-irs-501c3-application-form-872-c.pdf")

driver.quit()

Я получил сообщение об ошибке вроде:

TimeoutException                          Traceback (most recent call last)
<ipython-input-80-c56ffa95cb91> in <module>
      1 driver = webdriver.Firefox(firefox_profile=profile)
----> 2 
driver.get("https://static.mozilla.com/foundation/documents/mf-irs-501c3-application-form-872-c.pdf")
      3 driver.quit()

/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py in get(self, url)
    331         Loads a web page in the current browser session.
    332         """
--> 333         self.execute(Command.GET, {'url': url})
    334 
    335     @property

/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py in execute(self, driver_command, params)
    319         response = self.command_executor.execute(driver_command, params)
    320         if response:
--> 321             self.error_handler.check_response(response)
    322             response['value'] = self._unwrap_value(
    323                 response.get('value', None))

/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response)
    240                 alert_text = value['alert'].get('text')
    241             raise exception_class(message, screen, stacktrace, alert_text)
--> 242         raise exception_class(message, screen, stacktrace)
    243 
    244     def _value_or_default(self, obj, key, default):

TimeoutException: Message: Timeout loading page after 300000ms

1 Ответ

0 голосов
/ 08 октября 2019

Я проверил это с библиотекой запросов, что, по-моему, является проблемой с сетью. Попробуйте другой прокси-сервер?

import requests
url = "https://static.mozilla.com/foundation/documents/mf-irs-501c3-application-form-872-c.pdf"
r = requests.get(url)
with open('your.pdf','wb') as file:
    file.write(r.content)

поэтому, я думаю, что проблема с селеном в вашем коде также является проблемой сети

запросы не меняют прокси введите описание изображения здесь

запросы меняют мой прокси (тайвань ...) / или используйте мой baidu сервер введите описание изображения здесь почти скачать его

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