selenium.common.exceptions.WebDriverException не было обработано кодом пользователя и ошибкой HTTP 400. Имя хоста запроса недопустимо в Selenium - PullRequest
0 голосов
/ 21 декабря 2018

В последнее время я пытаюсь научиться использовать Selenium в Python, но когда я пытаюсь инициализировать Internet Explorer, я получаю исключение WebDriver.Строка, которая вызывает исключение, является следующей (и это в значительной степени начало кода):

driver = webdriver.Ie(r'pathtothefile\MicrosoftWebDriver.exe')

(я поставил путь, потому что я не знаю, где находится PATH, который делает этот аргумент ненужнымха-ха)

И ошибка следующая:

selenium.common.exceptions.WebDriverException was unhandled by user code
Message: Message: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Hostname</h2>
<hr><p>HTTP Error 400. The request hostname is invalid.</p>
</BODY></HTML>

Поскольку я делаю это в корпоративной сети, это может быть связано с некоторыми ограничениями, я полагаю ...?Или, может быть, тот факт, что я использую корпоративный компьютер, чтобы они могли отобрать некоторые конкретные действия ...?В любом случае, что бы это ни было, что я могу сделать, чтобы решить эту проблему?

Заранее спасибо!

1 Ответ

0 голосов
/ 21 декабря 2018

Это сообщение об ошибке ...

selenium.common.exceptions.WebDriverException was unhandled by user code
.
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Hostname</h2>
<hr><p>HTTP Error 400. The request hostname is invalid.</p>

... означает, что вашей программе не удалось инициировать / создать новый сеанс WebBrowsing т.е. InternetExplorer Browser сеанс.

Ваша главная проблема - несовместимость между типами используемых вами двоичных файлов.

Для инициализации браузера Internet Explorer вам необходимоиспользуйте IEDriverServer исполняемый файл, но не MicrosoftWebDriver.exe (для браузера Edge).


Решение

Вам необходимо скачать и распаковатьсоответствующий IEDriverServer из selenium-release.storage.googleapis.com и передайте абсолютный путь из IEDriverServer следующим образом:

  • ОС Windows пример:

    driver = webdriver.Ie(executable_path=r'C:\path\to\IEDriverServer.exe')
    
  • ОС Linux и MAC OS X пример:

    driver = webdriver.Ie(executable_path='/path/to/IEDriverServer')
    
...