Мой экземпляр Selenium IE не загружается для пользователей, не являющихся администраторами

Я написал приложение на C# для автоматизации входа на веб-страницу.

Он отлично работает, когда администратор запускает исполняемый файл. Всякий раз, когда проект запускает не администратор, создается впечатление, что IEDriver.exe не запускается. Нет ограничений на запуск IEDriver.exe из групповой политики.

private IWebDriver _driver;

public void SetUp()
{
        InternetExplorerOptions options = new InternetExplorerOptions();
        options.EnsureCleanSession = true;
        options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
        options.RequireWindowFocus = true;
        options.EnablePersistentHover = false;

        var service = InternetExplorerDriverService.CreateDefaultService();
        service.LibraryExtractionPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
        //service.HideCommandPromptWindow = true;

        _driver = new InternetExplorerDriver(service, options);
}

когда я раскомментирую LibraryExtractionPath, IEDriver не запускается.

Когда я отлаживаю код.

 Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

указывает на правильное место, которое

D:\PathToFolder\Project1\bin\Debug\

Я думаю, проблема в том, что клиенты (без прав администратора) не могут запустить IEDriver.exe.

ОБНОВЛЕНИЕ: защищенный режим Internet Explorer не отключен, что может помешать запуску драйвера IE от имени пользователя без прав администратора . Могу ли я отключить его с помощью кода С# и параметров службы IE?


person software is fun    schedule 14.08.2015    source источник
comment
Куда именно указывает LibraryExtractionPath? Где он находится?   -  person Arran    schedule 14.08.2015
comment
Ну, это должно указывать на каталог, из которого запускается EXE.   -  person software is fun    schedule 14.08.2015
comment
Полагаю? Можем ли мы получить точное местоположение, на которое указывает строка? Где живет водитель?   -  person Arran    schedule 14.08.2015
comment
Куда это решает? Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);   -  person software is fun    schedule 14.08.2015
comment
Я не знаю - я тебя спрашиваю. Это ваш код, а не мой :) Посмотрите, что Visual Studio называет значением этой строки?   -  person Arran    schedule 14.08.2015
comment
Драйвер находится в том же каталоге, что и исполняемый файл.   -  person software is fun    schedule 14.08.2015
comment
@Arran Я знаю, что Path.GetDirectoryName указывает на правильное местоположение. Как я могу заставить его загружать IEDriver из этого места   -  person software is fun    schedule 17.08.2015
comment
диск Д? Это локальный или общий диск?   -  person Arran    schedule 17.08.2015
comment
Общий сетевой диск   -  person software is fun    schedule 17.08.2015
comment
Любое предложение о IEDriverServer?   -  person software is fun    schedule 19.08.2015
comment
@Arran есть предложения по этой проблеме? пожалуйста, порекомендуйте   -  person software is fun    schedule 20.08.2015
comment
Если он находится на сетевом диске, возможно, это связано с разрешениями — обратитесь к своему ИТ-специалисту. Каковы разрешения на папку, в которой он живет?   -  person Arran    schedule 20.08.2015
comment
Аутентифицированные пользователи имеют разрешение на изменение. Все пользователи находятся в этой группе аутентифицированных пользователей   -  person software is fun    schedule 20.08.2015
comment
@softwareisfun Longshot, но возможно ли, что вы не отключили / не изменили настройки защищенного режима для Internet Explorer, поэтому драйвер IE может запускать сам браузер для каждого пользователя? code.google.com/p/selenium/wiki/InternetExplorerDriver   -  person NoSuchElephantException    schedule 23.08.2015
comment
Защищенный режим включен. Могу ли я отключить его с помощью кода С# и параметров службы IE?   -  person software is fun    schedule 23.08.2015
comment
@softwareisfun Этого я сам не знаю, так как это вопрос C#! Но, по крайней мере, теперь вы знаете об одной проблеме, которая вас блокирует. Может быть, вы можете отредактировать или задать новый вопрос конкретно об этом?   -  person NoSuchElephantException    schedule 24.08.2015
comment
@softwareisfun Можете ли вы также добавить в свой основной пост информацию о том, какие версии Internet Explorer и Windows вы используете? Для разных версий IE могут потребоваться разные решения.   -  person NoSuchElephantException    schedule 24.08.2015
comment
Все компьютеры работают под управлением Windows 7 с IE10. Предполагается наличие групповой политики для включения защищенного режима, включения и настройки прокси-серверов и т. д.   -  person software is fun    schedule 24.08.2015


Ответы (1)


Судя по указанному вами пути

D:\PathToFolder\Project1\bin\Debug\

Вы пытаетесь запустить драйвер из того места, где он был скомпилирован Visual Studio. Есть несколько причин, по которым это может не сработать.

Когда вы настроили и скомпилировали код в Visual Studio, он создал бы папку отладки и т. д. и использовал бы разрешения текущего пользователя. Это означает, что этот пользователь и администраторы могут иметь к нему доступ, но никто другой. Или, если это было сделано от имени администратора, оно может быть доступно только для администраторов.

Тихо часто Visual Studio и другие IDE также будут иметь другой рабочий каталог и компилировать exe в разные каталоги в зависимости от того, какие параметры сборки вы выбрали. Например, выпуск против отладки. Это означает, что ect dll, используемый exe, не находится в том же каталоге, что и exe. Когда вы работаете внутри Visual Studio, это не проблема, поскольку он устанавливает правильный рабочий каталог и сортирует все за вас. В вашем случае, вероятно, не все так просто, если это часть проблемы. Это может означать, что любой необходимый dll-файл может быть установлен и указан на пути для администратора, но не для обычных пользователей.

Это означает, что это, вероятно, проблема с путем или разрешениями. Я бы предложил использовать что-то вроде Dependency walker, чтобы увидеть, что такое exe: http://www.dependencywalker.com/ и обеспечить доступ к ним всех пользователей.

Если вы сделаете это как пользователь, программа не работает для обходчика зависимостей, которая покажет вам, какие зависимости не найдены.

person Darkcylde    schedule 27.08.2015