WatiN не может найти ни одного браузера в системе x64 - PullRequest
2 голосов
/ 06 декабря 2011

Я наблюдаю некоторые странные проблемы в системе x64, в которой работает наше приложение .NET.

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

В упомянутом x64 (Windows 7 Enterprise), WatiN не может найти открытые браузеры.

Внутренне, я считаю, WatiN запрограммирован перечислять все открытые окна с помощью Win32 API и проверять, соответствуют ли какие-либо заданные критерии.

Мой вопрос: если мой процесс загружен как x86 (я вижу * 32 рядом с in в taskmgr), вызывая некоторый метод, помеченный DllImport (...) Может потенциально загрузить версию x64?(EnumWindows определяется в User32.dll, например), какая версия загружается тогда?Один в C: \ Windows \ System32 или один в C: \ Windows \ SysWOW64

Наше приложение скомпилировано в конфигурации x86, однако некоторые из упомянутыхсборки компилируются в «Любой ЦП».

Может ли это вызвать какие-либо проблемы с правильной загрузкой правильных версий (x86 / x64) ссылок DLL / сборок?

РЕДАКТИРОВАТЬ: Добавлен дамп памяти загруженныхmodules: http://www.pasteall.org/27134/text

Обратите внимание, что некоторые модули фактически загружаются из Windows \ SysWOW64, а другие, например, SHDocVW.dll, из C: \ Windows \ System32

. Может ли это указывать на возможное столкновение?между 32/64 в этой системе?

Я отлаживал код WatiN до того момента, когда вызов некоторого нативного метода для перечисления окон возвращает ноль (хотя некоторые окна IE были доступны).

Как я могу далее отладить эту странную проблему?

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

Примерно так:

DebugApp -> DebugLib

Каждый из них был скомпилирован в x86 и Any CPU, и 4 разные комбинации былипроверено.

  1. Я запустил это на своем рабочем столе (32 бита), что вызвало 4 одинаковых вывода.
  2. На Windows Server 2008 R2 (64 бита) было создано 3 одинаковых вывода,и 1 запуск завершился сбоем (как и ожидалось - 64-битный EXE с 32-битным Lib).
  3. На сбойном компьютере было создано 4 идентичных файла, как у меня, как это может быть?это должно было привести к сбою приложения !!

Есть идеи после этой диагностики?

...