Для 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, прежде чем пытаться взаимодействовать с какими-либо элементами, отображаемыми на экране в ответ на наведение мыши, или щелкнуть