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")

可能会为你工作

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...