Watir: fire_event не работает, где щелчок работает в IE - PullRequest
0 голосов
/ 14 февраля 2012

Код ниже не работает:

browser.link(:id => "tab_buy").fire_event ("onmouseover")

Принимая во внимание, что этот код хорошо работает:

browser.link(:id => "tab_buy").click хорошо работает.

Это верно как для IE, так и для Firefox. Пожалуйста, дайте мне знать, если есть какие-либо обходные пути.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Имейте в виду, что действие нажатия на что-либо может вызвать множество различных событий, включая

  • onmousemove's
  • onmouseover
  • onmousedown
  • onmouseup
  • onclick
  • onmouseout

Этот вопрос и ответы могут быть полезны: Как узнать, какие события JavaScript сработали? как способ понять, какие события происходят, когда вы выполняете какой-то процесс, например, наведите курсор мыши на какой-либо объект и щелкните по нему.

Если ваша цель - щелкнуть ссылку, тогда использование .clickобычно самый прямой и простой способ сделать это.Если, с другой стороны, у вас происходят действия на основе Javascript или CSS (общие с надежными пользовательскими элементами управления, эмуляцией выпадающих меню и т. Д.), Вам может потребоваться запускать события, чтобы происходили такие события, как меню, появляющееся при перемещении мыши.поверх верхнего пункта в выпадающем меню.(это также может быть непросто, так как способ, которым CSS реагирует на «psuedoclasses», определенные с помощью действия «hover», отличается от того, как работает javascript на основе событий.

Однако, чтобы действительно дать вам больше, чем базовую информацию, и предоставитьконкретный ответ, вам придется рассказать намного больше о том, что происходит, что вы пытаетесь добиться, что происходит, и т. д., так как сейчас любому из нас потребовалось бы много чтения мыслей, чтобы понять, чтоВаша задача в том, как вы в настоящее время пытаетесь ее преодолеть.

0 голосов
/ 14 февраля 2012

В последний раз, когда я проверял .fire_event ("onmouseover"), не был реализован (watir-webdriver) по крайней мере в Firefox (это было несколько месяцев назад).

То, как я сейчас обхожусьэто с использованием следующего:

В файле, включенном во все мои тесты:

class Watir::Element
 def hover
  assert_exists
  driver.action.move_to(@element).perform
 end
end

Это дает каждому элементу метод наведения, который используется как:

browser.div(:id => "someId").hover

И вот как я до сих пор обрабатывал парящие события.Это было предложено (предоставлено) Яри Баккеном, когда я столкнулся с подобной проблемой с .fire_event("onmouseover") во время теста.

Я не уверен, будет ли это работать в IE, поскольку мы используем только Firefox здесь.

...