2015-04-14 20 views
0

我有一个从div级联的span元素,它看起来像一个带有文本的按钮“好吧,明白了”。 。它的HTML如下:Watir-webdriver点击操作返回true /成功,但并没有真正做点击动作

<span class="dijit dijitReset dijitInline defaultButton xwtButton xwt-TextButton xwt-TextButtonFocused dijitFocused" role="presentation" widgetid="xwt_widget_form_TextButton_2"> 
    <span class="dijitReset dijitInline dijitButtonNode" role="presentation" data-dojo-attach-event="ondijitclick:__onClick"> 
     <span id="xwt_widget_form_TextButton_2" class="dijitReset dijitStretch dijitButtonContents" aria-labelledby="xwt_widget_form_TextButton_2_label" role="button" data-dojo-attach-point="titleNode,focusNode" tabindex="0"> 
     <span class="dijitReset dijitInline dijitIcon dijitNoIcon" data-dojo-attach-point="iconNode"></span> 
     <span class="dijitReset dijitToggleButtonIconChar">\u25cf</span> 
     <span id="xwt_widget_form_TextButton_2_label" class="dijitReset dijitInline dijitButtonText" data-dojo-attach-point="containerNode">Okay, got it.</span> 
</span> 

所以,我想大多数类型点击:

@browser.span(:text => /Okay/).click 
@browser.span(:text => /Okay/).fire_event("onclick") 
@browser.span(:text => /Okay/).double_click 
@browser.span(:text => /Okay/).send_keys :enter etc 

我也用过,突出重点,hover..I看到,所有这些元素所处并执行点击(我看到元素种类显示由webdriver点击反应,但按钮类型的淡入淡出,这是什么,没有进一步发生,没有错误) 但我注意到它的HTML更改为一次点击,但没有任何反应,如果我试图再次点击:

<span class="dijit dijitReset dijitInline defaultButton xwtButton xwt-TextButton xwt-TextButtonHover digitHover xwt-TextButtonFocused xwt-TextButtonHoverFocused dijitHoverFocused dijitFocused" role="presentation" widgetid="xwt_widget_form_TextButton_2"> 

请帮助我如何处理这个用户界面点击

+0

没关系,我发现它的工作使用:跨度类=“dijitReset dijitInline dijitButtonNode” – Jade

+0

出好奇心,你在用什么浏览器?这是Firefox吗? –

回答

1

当你有像这样的嵌套跨度,只有最里面有文本,所有跨度有效地具有相同的文本。因此,如果您尝试单独选择文本,watir只会返回找到的第一个匹配项,这很可能是外层容器。这可能不是需要接受点击操作的人。

所以你需要通过一些其他的参数来选择,比如可能是类(根据意见是你最后什么了做)

@browser.span(:class => "dijitReset dijitInline dijitButtonNode").click 

有了这样的结构,最棘手的部分是找到它的那套嵌套跨度是需要点击的那一套..这主要是实验。IRB是你的朋友。

顺便说一句,你的开发人员正在使用任何库..男人所产生的HTML和DOM结构,使我的大脑受到伤害..