我在我的应用程序中使用
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
@H_404_22@解决方法
简答:你不能使用硒
更长的答案:该错误是selenium阻止您与不可见元素交互,因为用户无法单击或发送键到不可见元素.
如果你真的想要更改隐藏元素的值,唯一的方法是通过execute_script使用JS,但很可能不会生成trix期望/使用的事件.一个更好的解决方案是弄清楚用户将与哪些可见元素进行交互并直接与它们进行交互.带有selenium的Capybara确实支持在可见的contenteditable元素上调用set,这是trix似乎正在使用的(以及自定义元素),所以类似于
find(:css,'trix-editor').set("New text")
可能会为你工作
@H_404_22@ @H_404_22@