Rspec 元素可以在IRB中找到,但不能在webdriver运行中找到

Rspec 元素可以在IRB中找到,但不能在webdriver运行中找到,rspec,selenium-webdriver,anchor,overlay,watir-webdriver,Rspec,Selenium Webdriver,Anchor,Overlay,Watir Webdriver,我在应用程序中有一个锚定覆盖,我需要做3个动作:输入文本,选中复选框,然后单击OK。我可以找到元素并在IRB中遍历这些元素。但同样的代码行在webdriver运行时失败。我使用rspec。我得到的错误是Selenium::WebDriver::error::ElementNotVisibleError: 元素当前不可见,因此可能无法与之交互 HTML看起来像: <div id="xwt_widget_form_AnchoredOverlay_0_Popover" class="xwtPop

我在应用程序中有一个锚定覆盖,我需要做3个动作:输入文本,选中复选框,然后单击OK。我可以找到元素并在IRB中遍历这些元素。但同样的代码行在webdriver运行时失败。我使用rspec。我得到的错误是Selenium::WebDriver::error::ElementNotVisibleError: 元素当前不可见,因此可能无法与之交互

HTML看起来像:

<div id="xwt_widget_form_AnchoredOverlay_0_Popover" class="xwtPopover xwtAnchoredOverlayPopover dijitTooltipDialog xwt_BasePickerPopover disablePointer xwtAnchoredOverlayPopoverBelow dijitTooltipABLeft dijitTooltipBelow" wairole="presentation" widgetid="xwt_widget_form_AnchoredOverlay_0_Popover" style="top: 0px; visibility: visible;">
在运行过程中,在尝试输入文本或执行任何操作时,覆盖似乎正在崩溃。 请求提供一些我可以尝试的建议。令人困惑的是,在irb中它可以工作,但在脚本运行中却不能。我试过使用焦点、悬停、发送键等

更新:我发现让任何一个窗口都在浏览器运行的顶部都能让它工作。我将小终端窗口activefocus保持在浏览器运行的顶部,我看到它在工作。那么现在在这种行为中如何处理in-runs

正在寻找一些输入。非常感谢


谢谢,我找到了答案

触发锚定覆盖的点击动作并没有被webdriver真正识别出来。因此,尽管显示了覆盖图,webdriver抱怨这些元素在交互时不可见。 我使用了。发送密钥:输入而不是。单击。这使得webdriver能够理解所显示的覆盖图,并且可以轻松地与覆盖图上的元素进行交互


Jade

您尝试了什么代码?请分享您的问题代码。如果您能提供一个复制问题的HTML示例,这将有所帮助。您已经更新了更多详细信息。谢谢。请在此寻求帮助!!那么,我们如何访问另一个焦点窗口使其工作的元素呢。
 <td class="gridxCell " style="width:100px;;min-width:100px;;" aria-grabbed="false">
<div class="quickFilterItem forHeader-ipaddress">
<div id="widget_dijit_form_TextBox_22" class="dijit dijitReset dijitInline dijitLeft dijitTextBox" role="presentation" widgetid="dijit_form_TextBox_22" style="width: 100px;">
<div class="dijitReset dijitInputField dijitInputContainer">
<input id="dijit_form_TextBox_22" class="dijitReset dijitInputInner" type="text" autocomplete="off" data-dojo-attach-point="textbox,focusNode" tabindex="0" value="">
</div>
 def overlay_method(text)
      @browser.div(:class => 'xwt_BasePickerButton dijitDownArrowButton').click
      sleep 3
      @browser.div(:class => 'quickFilterItem forHeader-ipaddress').wait_until_present(10)
      @browser.div(:class => 'quickFilterItem forHeader-ipaddress').text_field.set text
      sleep 1
      @browser.span(:class => 'gridxIndirectSelectionCheckBox dijitReset dijitInline dijitCheckBox', :index => 0).click
      sleep 3
      @browser.div(:class => 'xwtAnchoredOverlayPopoverBelow').span(:text => 'OK').wait_until_present(10)
      @browser.div(:class => 'xwtAnchoredOverlayPopoverBelow').span(:text => 'OK').click


  end