2017-06-08 71 views
3

我在我的应用程序中使用Trix WYSIWYG editor。对于我的水豚测试:我想填写编辑。水豚错误:Selenium :: WebDriver :: Error :: ElementNotVisibleError:元素不可见

我发现文章:How to test basecamp's trip editor...看起来很有前途。不幸的是它不断给我这个错误:

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

这样看来,水豚是找到元素确定,但它只是不与它进行交互,因为水豚必须有一些默认设置不与隐藏/不可见元素进行交互。

环顾四周后,我遇到了这个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 

任何想法,我怎么能得到水豚,以填补在编辑器?对于什么是值得:我使用rails 5.1.1chromedriver=2.29.461585

+0

如何给用户一个互动合作隐藏的元素?你的规格测试是什么?它应该运行所需的任何代码,使该元素可见,即用户为了使其可见而做的任何操作 – DiegoSalazar

+0

@DiegoSalazar我更新了我的问题。最终,我试图找出如何填写与水豚编辑。我正在往下走的道路看起来好像不可能直接填写编辑,所以唯一的选择是让水豚填充隐藏的元素。我现在正在为托马斯的答案努力工作。 – Neil

回答

3

简短的回答:你可以不使用硒

较长的答案:这错误是硒阻止你用不可见的元素进行交互,因为会有没有办法使用户单击或将密钥发送给不可见的元素。

如果你真的想改变一个隐藏元素的值,唯一的方法是通过execute_script使用JS,但最有可能不会生成trix期望/使用的事件。一个更好的解决方案是找出用户可以直接与之交互并与之交互的可见元素。水豚硒不支持调用上可见CONTENTEDITABLE元素set这是什么TRIX似乎使用(自定义元素)所以像

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

可能会为你

+0

谢谢我会尝试。 – Neil

相关问题