繁体   English   中英

Capybara错误:Selenium :: WebDriver :: Error :: ElementNotVisibleError:元素不可见

[英]Capybara error: Selenium::WebDriver::Error::ElementNotVisibleError: element not visible

我在我的应用程序中使用Trix WYSIWYG编辑器 对于我的水豚测试:我想填写编辑器。

我找到了这篇文章: 如何测试basecamp的旅行编辑器......这似乎很有希望。 不幸的是它一直给我这个错误:

Selenium :: WebDriver :: Error :: ElementNotVisibleError:元素不可见

所以似乎Capybara找到了元素ok,但它只是没有与它交互,因为Capybara必须有一些默认设置,不与隐藏/不可见元素交互。

环顾四周之后,我遇到了这个Stackoverflow问题: 是否可以与隐藏元素进行交互

从那篇文章:我已经尝试过这个:

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.1chromedriver=2.29.461585

简答:你不能使用硒

更长的答案:该错误是selenium阻止您与不可见元素交互,因为用户无法单击或发送键到不可见元素。

如果你真的想要改变隐藏元素的值,唯一的方法是通过execute_script使用JS,但很可能不会生成trix期望/使用的事件。 一个更好的解决方案是弄清楚用户将与哪些可见元素进行交互并直接与它们进行交互。 带有selenium的Capybara确实支持在可见的contenteditable元素上调用set ,这是trix似乎正在使用的(以及自定义元素),所以类似于

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

可能会为你工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM