我在应用程序中使用的是trix wysiwyg编辑器。对于我的Capybara测试:我想填写编辑器。
我找到了这篇文章:如何测试Basecamp的Trip编辑器...这似乎很有希望。不幸的是,它一直给我这个错误:
Selenium :: WebDriver :: error :: element notvisibleerror:element不可见
因此,Capybara看来可以找到元素,但是它只是不与之交互,因为Capybara必须具有一些默认设置才能与隐藏/隐形元素进行交互。
环顾四周后,我遇到了这个堆叠的问题:是否可以与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
简短答案:您不能使用硒
更长的答案:该错误是硒可以阻止您与不可见元素进行交互,因为用户无法单击或将键发送到不可见的元素。
如果您真的想更改隐藏元素的值,那么唯一的方法是通过execute_script
使用JS,但很可能不会生成事件Trix的期望/使用。一个更好的解决方案将弄清楚用户会直接与之交互并与之交互的可见元素。带有硒的Capybara确实支持在可见的可满足元素上调用set
,这是Trix似乎正在使用的(以及自定义元素(,因此
find(:css, 'trix-editor').set("New text")
可能对您有用