Мысли над якорем на Watir, не обнаруживая - PullRequest
1 голос
/ 01 ноября 2011

Я пытаюсь вызвать всплывающее окно мыши над Watir на ruby.

Я пробовал использовать оба приведенных ниже сценария, пока ни один из них не сработал.:

$browser.div(:class => "rolloverMAINMenu").fire_event("onMouseOver")

и

$browser.a(:style=>"background-color:cccccc;width:200px;").fire_event("onMouseOver")

HTML:

<font COLOR="green">
<a style="background-color:cccccc;width:200px;" onmouseover="rolloverMenu(1, 'mainMenu');" onmouseout="rolloverMenu(0, 'mainMenu');"
onclick="rolloverMenu(0, 'mainMenu');">
&nbsp;&nbsp;<B> Roll Over Menu </B></a>

 <div style="background-color:cccccc;width:200px;" class="rolloverMAINMenu"   id="mainMenu"    style="display: none;" onmouseover="rolloverMenu(1, 'mainMenu');"`

1 Ответ

0 голосов
/ 02 ноября 2011

Для div, поскольку у него есть идентификатор, я бы рекомендовал использовать его для его идентификации, поскольку значения идентификатора должны (в соответствии со спецификацией HTML) быть уникальными на странице.Это гарантирует, что вы выбираете правильный элемент.

Во-вторых, так как код ищет 'onmouseover', я бы указывал событие таким образом и не использовал camelCase

browser.div(:id, 'mainMenu').fire_event('onmouseover')

Для ссылки:проблема, с которой вы столкнулись, заключается в ее идентификации.Я не вижу: стиль, указанный в качестве опции для идентификации элементов (хотя потенциально этот документ может быть устаревшим), я мог бы предложить использовать текст или какой-то другой аспект, или вам может потребоваться прибегнуть к xpath.

browser.link(:text, /Roll Over Menu/).fire_event('onmouseover')

Или, поскольку ссылка настроена на реакцию на нажатие, вы можете попробовать это также:

browser.link(:text, /Roll Over Menu/).click 

Если вы помещаете их в сценарий, так как клиент выполняет методы javascriptв ответ на события вам может потребоваться сделать небольшую паузу в сценарии в этой точке, чтобы обновить DOM, прежде чем пытаться взаимодействовать с какими-либо элементами, отображаемыми на экране в ответ на наведение мыши, или щелкнуть

...