【问题标题】:How tho check this checkbox (capybara/ruby)如何选中此复选框(水豚/红宝石)
【发布时间】:2021-03-28 13:44:35
【问题描述】:

如何勾选这个复选框?enter image description here

我试过了:

  within('div[id="modalPersistEtapa"]') do

                 element = @driver.find_element(:xpath, '//*[@id="2018_4"]/i')
                 @driver.execute_script("arguments[0].click();"

没有成功! =(

我收到了这个错误:

  element click intercepted: Element <i class="i i-logout"></i> is not clickable at point (1878, 56). Other element would receive the click: <div class="modal fade bs-example-modal-lg in" id="modalPersistEtapa" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="false" style="display: block;">...</div>
    (Session info: chrome=87.0.4280.88) (Selenium::WebDriver::Error::ElementClickInterceptedError)
  Backtrace:
    Ordinal0 [0x012DC0C3+3326147]

...

【问题讨论】:

  • 从错误中,听起来您需要更改框大小或元素的 z 顺序。由于您的问题中没有可执行或可测试的代码,因此您不太可能得到完整的答案。
  • 请在代码中使用换行符,使其适合窗口。
  • 代码末尾缺少括号。
  • 请在问题中包含包含您尝试点击的内容的整行的 HTML。

标签: javascript ruby selenium capybara


【解决方案1】:

不要使用直接驱动程序调用或 execute_script 来尝试点击某些东西 - 如果你不得不这样做,那你就做错了。

within('div[id="modalPersistEtapa"]') do
  find(:xpath, './/*[@id="2018_4"]/i').click();
  ...
end

通常对于这样的事情,我还建议使用 CSS 而不是 XPath,但 XPath 在这里可能有意义,因为您必须在 CSS 中转义以数字开头的 id。还要注意 XPath 前面的“.//” - 没有点它会使 within 毫无意义,因为 XPath 将逃脱范围。

如果这对你不起作用,那么尝试通过其他方式来做只会让你的测试变得毫无价值。

【讨论】:

  • 非常感谢!!我试过了:find(:xpath, '/xpath...', visible:false).set(true) 并且成功了!!这是一个不可见的元素,所以我设置为可见:假。我认为是 =)
  • @Mary 与不可见元素的交互不能保证有效(因为用户无法与它们交互)并且可能随时中断。如果您将整行的 HTML 添加到您的问题中,我可能会告诉您应该做什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-09
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
相关资源
最近更新 更多