IEDriverServer.exe создан как маленький простой исполняемый файл с файлом .dll с реальным кодом для IE-драйвера, встроенного в ресурс внутри .exe. Чтобы использовать эту .dll, исполняемый файл должен извлечь .dll где-нибудь, чтобы он мог вызвать API Windows LoadLibrary
для загрузки и последующего выполнения кода .dll. По умолчанию это извлечение выполняется в каталог temp. Не создавая файл журнала для изучения проблемы, мы можем предположить, что .dll либо не извлекается должным образом, либо когда-то извлечено, что вызов LoadLibrary
не удался.
К счастью, драйвер IE обеспечивает обходной путь для этой проблемы. Если вы передадите --extract-path="path\to\extract\dll\to"
в качестве аргумента командной строки для IEDriverServer.exe, вы сможете явно указать, какую директорию использовать для извлечения. См. Документацию для языковых привязок, чтобы узнать, как этот аргумент командной строки передавался программно.
Например, что делает эту работу для Java, код будет выглядеть следующим образом:
// WARNING: Entirely untested code below! Was written from memory without
// the benefit of an IDE. May not work correctly or even compile without
// modification.
// Assume "location" is a properly instantiated java.io.File containing
// the location of IEDriverServer.exe.
InternetExplorerDriverService service = new InternetExplorerDriverService.Builder()
.withExtractPath(location)
.build();
WebDriver driver = new InternetExplorerDriver(service);
Другой альтернатива может быть вручную запускать IEDriverServer.exe, и использовать свои языковые привязки RemoteWebDriver
класса для подключения к Это. Это означает, что вы несете ответственность за всю жизнь исполняемого процесса, но это может помочь вам найти поведение, которое вы ищете.
Я попробовал то же самое с версией драйвера сервера IE 2.32 и получил ту же самую ошибку, так что модернизация не обязательно почини это. Что касается вопроса о разрешении, ну да, я подозревал, что это причина, но какие разрешения где? Любая помощь с этим будет оценена по достоинству. – NestorDRod