我正在使用 Trix WYSIWYG editor在我的应用程序中。对于我的 capybara 测试:我要填写编辑器。
我找到了这篇文章:How to test basecamp's trip editor...这似乎很有希望。不幸的是,它一直给我这个错误:
Selenium::WebDriver::Error::ElementNotVisibleError: element not visible
所以看起来 Capybara 发现元素没问题,但它只是没有与之交互,因为 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 填写编辑器吗?对于它的值(value):我正在使用 rails 5.1.1
和 chromedriver=2.29.461585
最佳答案
简短回答:你不能使用 Selenium
更长的答案:该错误是 selenium 阻止您与不可见元素交互,因为用户无法单击或向不可见元素发送键。
如果您真的想更改隐藏元素的值,唯一的方法是通过 execute_script
使用 JS,但这很可能不会生成 trix 期望/使用的事件。一个更好的解决方案是弄清楚用户将与哪些可见元素交互并直接与它们交互。带有 selenium 的 Capybara 确实支持在可见的 contenteditable 元素上调用 set
,这就是 trix 似乎正在使用的(以及自定义元素)所以像
find(:css, 'trix-editor').set("New text")
可能对你有用
关于ruby-on-rails - capybara 错误:Selenium::WebDriver::Error::ElementNotVisibleError:元素不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44443352/