如何点击一个奇怪的链接看起来像watir中的按钮

时间:2011-11-03 06:46:01

标签: watir watir-webdriver

我想使用Watir点击一个看起来像附加图像的按钮的链接。

我使用以下方法,但不起作用:

@browser.div(:id,"NetworkAnalysisTabPanel").div(:index,1).div(:index,1).ul(:index,1).li(:index,1).link(:index,2).click

注意:

@browser.div(:id,"NetworkAnalysisTabPanel").div(:index,1).div(:index,1).ul(:index,1).li(:index,1).link(:index,2).flash

工作正常但是在IE和FF中点击不起作用

链接看起来像这样:

link

和HMTL一样:

html

注意:我可以使用selenium IDE点击元素并使用clickAt方法

2 个答案:

答案 0 :(得分:1)

试试这个(未经测试):

browser.link(:class => "x-tab-strip-menu").click

如果您可以刷新链接,但点击无法执行您想要的操作,请参阅:How to find out which JavaScript events fired?

答案 1 :(得分:0)

仅供参考我们所拥有的是使用通过CSS魔法控制的标准背景图像的链接,这些链接在链接类上键入以了解要设置的背景。这就是图像的来源,以及为什么你不把它看作HTML链接的一部分。

在该控件中,每个选项卡都是无序列表(ul)中的列表项元素(li),并且每个列表项都有一个ID,因此这是告诉它您尝试在内部单击哪个选项卡的最简单方法。

尝试识别以作为选项卡容器的LI开头的内容,因为在该容器中,给定类的每个链接只有一个实例。在4个链接中,只有一个没有任何简单的标识符,如果你需要点击那个你需要使用的:index,但对于其他3个链接使用:class应该工作。这会导致代码变得不那么脆弱,如果选项卡的顺序发生变化,或者页面被重构,则会导致代码被破坏。

@browser.li(:id,"NetworkAnalysisTabPanel__ext-comp-1038").link(:class, "x-tab-strip-menu").click

如果ID末尾的数字可能会发生变化,您可以尝试使用正则表达式来匹配您可以预测的部分并且与其他部分不同

@browser.li(:id,/NetworkAnalysisTabPanel__ext-comp-/).link(:class, "x-tab-strip-menu").click

如果你可以可靠地识别对象并使用.flash,但.click似乎没有做任何事情,你可能不得不使用.fire_event('onclick')代替或.click。

@browser.li(:id,/NetworkAnalysisTabPanel__ext-comp-/).link(:class, "x-tab-strip-menu").fire_event('onclick')

如果这不起作用,那么你需要开始尝试控件可能正在寻找的可能事件(这些事件不一定会出现在HTML btw中......它可能在javascript或CSS等中)

<强>更新 这是我们可以与之交互的实时控件示例的关键所在。在网上找一些谷歌搜索我能找到一个here并让我玩一点,我发现它正在寻找onmousedown。所以,在该网站上,这是有效的

browser.li(:id, 'TabPanel1__ctl07').link(:class, 'x-tab-strip-menu').fire_event('onmousedown')

现在因为那些ID可能不是最好的标识符,所以更多的挖掘(使用包含标签部分的li上的.text)找到了一些文本,这在菜单中应该是唯一的..所以,我们可以改变这一点,使我更加健壮,更清楚地看到我点击了什么标签(如果标签发生变化,这也会减少。

browser.li(:text, 'Menu 1').link(:class, 'x-tab-strip-menu').fire_event('onmousedown')

最后,由于点击导致客户端代码执行,您可能需要短暂暂停(一到两秒睡眠)等待页面的该部分重新渲染等。