Capybara + Selenium - 元素不可点击(388.3833312988281,8.333328247070312)。其他元素将收到点击

时间:2016-10-05 11:59:53

标签: ruby capybara

我遇到按钮问题。 每次我尝试点击,我都会收到此消息

"元素不可点击(388.3833312988281,8.333328247070312)。其他元素将收到点击。 "

我正在使用Firefox,Capybara + ruby​​和selenium(不是webdriver)

这是按钮的代码

我想点击添加按钮

我该怎么办?

<div class="box08-2 collapseBoxContent" style="margin-top: 0px">
  <div id="wt32_Huge_WebbBaseTheme_wt11_block_wtMainContent_wtMainContent_wtItemsWB_Huge_WebbBaseTheme_wt31_block_wt8_wtCollapsibleContentPH" style="margin-top: 0px">
     <div id="wt32_Huge_WebbBaseTheme_wt11_block_wtMainContent_wtMainContent_wtItemsWB_Huge_WebbBaseTheme_wt31_block_wt8_wtCollapsibleContentPH_wtContent" style="margin-top: 0px">
       <div id="wt32_Huge_WebbBaseTheme_wt11_block_wtMainContent_wtMainContent_wtItemsWB_Huge_WebbBaseTheme_wt31_block_wt8_wtCollapsibleContentPH_wtContent_wtCtnBody" data-webbtests="CompraWeb.Request_Edit.ItemsWB.divCtnBody">
         <div class="btn04 btn04v5 box20v10">
           <div id="wt32_Huge_WebbBaseTheme_wt11_block_wtMainContent_wtMainContent_wtItemsWB_Huge_WebbBaseTheme_wt31_block_wt8_wtCollapsibleContentPH_wtContent_RichWidgets_wt42_block_wtDropDownButtonRoot" class="Menu_DropDownButton OSInline">
             <div id="wt32_Huge_WebbBaseTheme_wt11_block_wtMainContent_wtMainContent_wtItemsWB_Huge_WebbBaseTheme_wt31_block_wt8_wtCollapsibleContentPH_wtContent_RichWidgets_wt42_block_wtDropDownButtonElement" class="Menu_TopMenu">
              <div id="wt32_Huge_WebbBaseTheme_wt11_block_wtMainContent_wtMainContent_wtItemsWB_Huge_WebbBaseTheme_wt31_block_wt8_wtCollapsibleContentPH_wtContent_RichWidgets_wt42_block_wtMenuItem">
                  <span data-webbtests="CompraWeb.Request_Edit.ResumeRequestItemsWB.lblActions">Add</span>

2 个答案:

答案 0 :(得分:0)

当DOM未准备好或正在更改时,通常会出现此问题。

所以你应该等到页面稳定,所有异步脚本完成,图像加载等等。广告也可能是一个问题,因为他们可能会更改页面。

请看这里等待(顺便说一句,我建议在Selenium上使用watir webdriver): http://watir.github.io/docs/waiting/

以下是降低此问题可能性的步骤:

  • 将此代码包装在救援块中,并在发生时重试
  • 禁用图片加载
  • 安装AdBlock或类似的扩展程序
  • 在Watir中使用wait_助手
  • 尽量避免使用复杂的css选择器。使用类似button(text: 'Add')的内容
  • 如果您使用它,请尽可能选择一个元素尽可能接近代码中的单击操作

答案 1 :(得分:0)

我不确定我是否理解你的&#34;不是webdriver&#34;评论,因为与Capybara一起使用selenium的唯一方法是通过selenium-webdriver gem。

根据您获得的错误的y位置判断(8.333328247070312),您尝试点击的按钮可能位于固定标头后面。这可能是因为您没有点击使按钮从标题后面滑出所需的元素,或者因为页面长于屏幕而selenium-webdriver滚动页面直到元素位于顶部(结束时)在你的标题后面)。如果您在页面上没有固定页脚,则可以通过elementScrollBehavior属性更改selenium-webdriver,将元素滚动到底部而不是顶部 - 请参阅Selenium WebDriver : How do I set capabilities elementScrollBehavior to 1 for a FireFox configuration in rails? 。如果这对您不起作用,那么您可以使用execute_script和JS来滚动页面,以便元素从标题下移出