我正在尝试在Watir中为我们的Web应用程序设置一些UI测试。我遇到麻烦让点击事件传播。我们正在使用EXTJS制作标签,这些标签是生成的html中的跨度。
如果我选择这样的跨度,它可以工作:
span1 = @browswer.span(:text=>"Tab Name")
span1.click
问题在于我有一个名称相同的子选项卡,并希望能够区分它们。我发现明确选择子选项卡的唯一方法是首先选择子选项卡所在的列表,然后从中选择子选项卡。
ul = @browser.ul(:class=>/tab-strip-bottom/)
span2 = ul.span(:text=>"Tab Name")
span2.click
span2.click似乎没有做任何事情。 span1和span2之间唯一不同的(我可以看到)是容器属性。 span1。@ container = @browser,span2。@ container = ul。
我尝试使用
在span2上设置容器span2.instance_variable_set("@container", @browser)
然后我最后点击了错误的标签。有什么想法吗? 谢谢!
答案 0 :(得分:1)
请分享HTML代码,我甚至不理解这个问题。
也许你需要解雇一些JavaScript事件。见How to find out which JavaScript events fired?
答案 1 :(得分:0)
我终于解决了我用xpath遇到的问题。
tab = @browser.element_by_xpath(".//*[contains(@class,'x-tab-strip-top')]//*/em/span/span[. =\"#{value}\"]")
tab.click
这并不理想,因为xpath代码非常难看。如果可以通过使用watir的“糖果”选择器来选择元素,那么可维护性会更好。
答案 2 :(得分:0)
您可以指定在有多个匹配对象时使用的索引。这对你有用吗?
@browser.span(:text=>"Tab Name", :index => 2).click
索引值是相对于您正在搜索的容器。有关搜索对象时可能使用的所有可能性的表,请参阅:HTML Elements Supported By Watir
答案 3 :(得分:0)
我们有一个包含多个层级的网页菜单,听起来就像你拥有的一样。当进入下一个选择(直接对角线)时,鼠标将从菜单的第二级下降,第二级菜单将关闭。这就是你在说什么?我们通过触发javascript来解决它,因为菜单项称为javascript(Zeljko的解决方案)。我们只需要注意菜单项的ID。不确定这是否比xpath解决方案更丑陋或更漂亮。我说“我们”因为我需要帮助。