有人可以告诉我如何点击使用javascript事件触发的元素上的Watir。
例如,在http://www.kissmetrics.com/上,在主页上,如果我点击示例图片上的“了解更多”按钮,则会显示一个灯箱。然后我可以点击“开始使用”按钮移动注册页面。
如何模拟Watir中的东西? IE浏览器。我如何首先点击“了解更多”,然后点击“开始使用”按钮?
感谢您的帮助。
答案 0 :(得分:2)
实际上,当您点击时会触发javascript事件,但它们可能不是特定元素正在寻找的事件。有时必须首先将元素置于可以通过鼠标悬停等方式点击它的状态。
所以诀窍通常是弄清楚需要触发什么事件(参见Zeljko的回答),然后使用.fireevent方法根据需要的顺序触发那些需要查看它们的元素。
很多时候你几乎不得不通过查看html中哪些元素正在寻找什么事件来对开发人员正在做的事情进行逆向工程。
在这种特定情况下,如果你的目的是点击蓝色了解更多按钮,似乎是在某种屏幕截图之上,那么检查HTML或者DOM显示它有一个方便的ID值,可能是用过的。您还可以看到它是“有线”响应onclick事件,更重要的是它打开一个新的模式窗口(在这种情况下是一个看起来像弹出窗口的div)onclick="new Modal('learn_more_content', {top: 110, modalClass: 'borderless'}).show()
。所以下面的代码应该可以用来启动模态
browser.button(:id, "learn_more_btn").click
然后点击绿色的“开始”按钮(其中有几个,所以我们需要一种方法来指示哪一个)
browser.p(:class, "cta").button(:class, "green button has_arrow").click
答案 1 :(得分:0)
我认为问题是当你点击Watir链接时不会触发JavaScript事件。这有助于:How to find out which JavaScript events fired?
答案 2 :(得分:0)
我在irb中对此进行了测试并且有效:
browser.span(:text, 'Learn more').click
browser.span(:text, 'Get Started').click
只要它在DOM中就可以实现它。