Watir :: IE.attach (: title, / x /) не работает правильно на Win 7 IE8 - PullRequest
4 голосов
/ 21 апреля 2010

Система: Окно 7 Internet Explorer 8 Ruby 1.8 Watir 1.6.5

Если я вручную открою окно браузера, а затем захожу на сайт, который вызывает открытие второго окна браузера, а затем использую метод Watir :: IE.attach, чтобы найти второе окно браузера, все работает нормально. Проблема в том, что я открываю первое окно Internet Explorer с помощью команды Watir :: IE.new, а затем посещаю сайт, который вызывает открытие второго окна браузера. Когда я использую Watir :: IE.attach, чтобы найти второе окно браузера, я теперь получаю: Watir :: Exception :: NoMatchingWindowFoundException: невозможно найти окно с заголовком (? -Mix: x) из /ie-class.rb:297:in 'attach_browser_window' из /ie-class.rb:149:in '_attach_init' из /ie-class.rb:143:in 'attach' из (irb): 15

Кто-нибудь сталкивался с этой проблемой и разработал решение?

Я провел немного больше расследований, и я запускаю свой сценарий с правами администратора, и он открывает IE8 в качестве администратора, а затем пытается открыть новое окно. Я попытался открыть IE8 как администратор вручную, а затем открыть новое окно из браузера, затем запустить команду присоединения с помощью watir, и я получил ту же ошибку, как если бы я создал начальное окно с помощью watir.

Я хочу иметь возможность запускать мой скрипт от имени администратора.

Я попытался выполнить команду watir вручную, а также запустить в сценарии:

======================

требуется 'rubygems'

требуется 'watir'

т.е. = Watir :: IE.start ("http://www.quackit.com/html/codes/html_open_link_in_new_window.cfm")

ie.link (: text, "HTML Help"). Нажмите

ie2 = Watir :: IE.attach (: title, / Help /)

======================

Ответы [ 3 ]

1 голос
/ 02 декабря 2010

У меня та же проблема. Я исследовал это немного подробнее, и проблема, похоже, заключается в том, что когда уже существует экземпляр IE8, который был открыт с правами администратора, Watir не увидит никаких других окон IE8, которые запускаются с правами администратора, в том числе оно само открывается.

Я пришел к этой реализации, сделав следующее:

Watir::IE.each do |window|

  puts window.title

end

Были рассмотрены следующие случаи:

  1. Никакие ранее открытые окна IE не приводили к тому, что watir перечислял только новый браузер, а не тот, который он создал (к которому я хотел присоединиться).
  2. В одном или нескольких ранее открытых окнах IE, не связанных с правами администратора, будут перечислены ранее существующие экземпляры браузера, а также он сам, но, опять же, в нем не будет отображаться новое окно, которое оно породило.
  3. Одно или несколько ранее открытых окон IE, запущенных с правами администратора, немного отличались тем, что в них были бы перечислены все существующие ранее окна, но не были перечислены и ни какие дополнительные окна, которые он создал.

Это привело меня к выводу, что Watir не сохранит в своем списке ни одного экземпляра IE8 с привилегиями администратора, который он создает после того, как будет открыт существующий IE8 с привилегиями администратора.

Решение, которое я использую сейчас, состоит в том, чтобы просто не запускать мои скрипты от имени администратора. Я понимаю, что в некоторых случаях это не совсем вариант, но это лучшее, что мне удалось найти.

1 голос
/ 27 мая 2011

Отключить контроль учетных записей (установите самые низкие настройки). Перейдите в Панель управления-> Система и безопасность-> Центр поддержки-> Изменить настройки контроля учетных записей и переместите ползунок на минимальное значение.

У меня возникла та же проблема, и это исправило ее для меня.

1 голос
/ 03 мая 2010

В настоящее время watir предполагает, что окно, к которому вы хотите присоединиться, называется «Internet Explorer».Я думаю, что имя IE8 может отличаться от этого.Вы можете изменить это в строке 238 ie-class.rb.

Bret

...