2015-04-08 2 views
3

Как WebDriver запускает экземпляр IE?Как WebDriver запускает экземпляр IE?

То есть, что именно делает IEDriverServer.exe? Как этот бинарный экземпляр создает окно браузера IE?

+0

Вы уже прочитали эту документацию? https://code.google.com/p/selenium/wiki/InternetExplorerDriver –

+0

Да, я уже прошел этот документ. Он не объясняет механизмы создания IE-браузера. Например, FirefoxDriver запускает браузер Firefox, используя установку Firefox в месте, указанном в параметре 'webdriver.firefox.bin'. Для IE WebDriver, похоже, запускает браузер через IEDriverServer.exe? Это верно? – badhaircut

+0

В первых параграфах документации говорится все: «Драйвер (WebDriver) поддерживает запуск 32-разрядных и 64-разрядных версий браузера. Выбор того, как определить, какая« бит-версия »использовать при запуске браузера, зависит на которой запущена версия IEDriverServer.exe. Если запущена 32-разрядная версия IEDriverServer.exe, будет запущена 32-разрядная версия IE. Аналогично, если запущена 64-разрядная версия IEDriverServer.exe, будет запущена 64-разрядная версия IE ». –

ответ

2

Когда новая сессия запрошенный языковых привязок, IEDriverServer.exe вызывает функцию API Windows, IELaunchURL на «исправный» URL. Обычно это http://localhost:[port], но его можно контролировать, передавая определенные возможности. С введением защищенного режима в IE 7, this API is the proper way to launch IE. Драйвер подключается к локальному хосту вместо, скажем, о: пустом, поскольку целевой URL должен принадлежать зоне защищенного режима, а около: пустое - нет.

API IELaunchURL также требуется, потому что с многопроцессорным IE процесс, запущенный простым запуском iexplore.exe, может быть не фактическим процессом, в котором должен находиться браузер. API IELaunchURL возвращает идентификатор процесса запущенного браузера, который драйвер может использовать для поиска дескриптора окна окна браузера, принадлежащего этому процессу iexplore.exe. Как только дескриптор окна известен, драйвер может использовать один из двух методов (либо Active Accessibility, либо ShellWindows API), чтобы получить ссылки на объекты COM-объекта IE, которые он использует для фактического управления браузером.

Следует отметить, что по умолчанию драйвер напрямую не создает экземпляр IE через CreateProcess и, следовательно, не нужно запрашивать реестр для поиска установленного местоположения IE для запуска браузера. Хотя драйвер делает, определяет местоположение исполняемого файла IE и использует этот реестр для этого, но он использует местоположение, чтобы драйвер мог правильно и однозначно определить версию IE, установленную в системе.

+0

Замечательно! Это именно то, что я искал. – badhaircut

2

IEDriverServer - это автономный HTTP-сервер, который реализует проводной протокол JSON от WebDriver - с помощью которого WebDriver управляет IE. IEDriverServer использует библиотеку COM, зарегистрированную на компьютере, для создания экземпляра браузера.

enter image description here https://selenium.googlecode.com/svn/wiki/JsonWireProtocol.wiki https://code.google.com/p/selenium/wiki/InternetExplorerDriverInternals#How_the_Works

1

Прежде всего, я думаю, что стоит определить, что WebDriver есть. В определении и в качестве другого упомянутого ответа WebDriver реализует API, который является независимым от языка и платформы и управляет браузерами через связанные проволочные протоколы. Я бы порекомендовал вам прочитать this, чтобы узнать о внутренней архитектуре WebDriver

Теперь, что именно делает IEDriverServer.exe делать?

IEDriverServer, а также другие драйверы могут рассматриваться как интерпретатор общих команд WebDriver.

• Так вы пишете какую-либо команду, используя Java, C#, Python и т.д.

• Вы начали выполнение этих команд, выполнив Селен тесты

• Селен стартует сервер IEDriver (и другой драйвер или что-то вы используя) и водитель начать прослушивание к свободному порту

enter image description here

• Селен команд перехвата водителя и передачи в браузере через JSon PROT ocol и управляет браузером. Ответ, предоставленный @Vinoth S, показывает весь этот процесс.

Во-вторых, как этот бинарный экземпляр создает окно браузера IE?

Поскольку @Roman говорит, что IEDriver и все другие драйверы знают, где искать, чтобы открыть браузер. Это в основном реестр. Если вы перейдете к пути к реестру @Roman, вы увидите местоположение exe, подобное этому. В моем случае окно в D диске, но обычно он находится в C

enter image description here

Смежные вопросы