微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Capybara错误:Selenium :: WebDriver :: Error :: ElementNotVisibleError:元素不可见

我在我的应用程序中使用 Trix WYSIWYG editor.对于我的水豚测试:我想填写编辑器.

我发现文章How to test basecamp’s trip editor…看起来很有希望.不幸的是它一直给我这个错误

Selenium::WebDriver::Error::ElementNotVisibleError: element not visible

所以似乎Capybara找到了元素ok,但它只是没有与它交互,因为Capybara必须有一些认设置,不与隐藏/不可见元素交互.

环顾四周之后,我遇到了这个Stackoverflow问题:Is it possible to interact with hidden elements with capybara.

从那篇文章:我已经尝试过这个:

def fill_in_trix_editor(id,value)
  Capybara.ignore_hidden_elements = false
  find(:xpath,"//*[@id='#{id}']").set(value)
  Capybara.ignore_hidden_elements = true
end

除此之外:

def fill_in_trix_editor(id,value)
  find(:xpath,"//*[@id='#{id}']",visible: false).set(value)
end

关于如何让Capybara填写编辑器的任何想法?值得一提的是:我使用的是rails 5.1.1和chromedriver = 2.29.461585

解决方法

简答:你不能使用硒

更长的答案:该错误是selenium阻止您与不可见元素交互,因为用户无法单击或发送键到不可见元素.

如果你真的想要更改隐藏元素的值,唯一的方法是通过execute_script使用JS,但很可能不会生成trix期望/使用的事件.一个更好的解决方案是弄清楚用户将与哪些可见元素进行交互并直接与它们进行交互.带有selenium的Capybara确实支持在可见的contenteditable元素上调用set,这是trix似乎正在使用的(以及自定义元素),所以类似于

find(:css,'trix-editor').set("New text")

可能会为你工作

原文地址:https://www.jb51.cc/ruby/264484.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐