Capybara error: Selenium::WebDriver::Error::ElementNotVisibleError: element not visible
Capybara error: Selenium::WebDriver::Error::ElementNotVisibleError: element not visible
我在我的应用程序中使用 Trix WYSIWYG editor。对于我的水豚测试:我要填写编辑器。
我发现这篇文章:How to test basecamp's trip editor... 看起来很有希望。不幸的是,它一直给我这个错误:
Selenium::WebDriver::Error::ElementNotVisibleError: element not visible
所以看起来 Capybara 发现元素没问题,但它只是没有与之交互,因为 Capybara 必须有一些默认设置才能不与 hidden/invisible 元素交互。
环顾四周后,我发现了这个 Whosebug 问题:Is it possible to interact with hidden elements with capybara。
来自post:我已经试过了:
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
简答:您不能使用 selenium
更长的答案:该错误是 selenium 阻止您与不可见元素交互,因为用户无法单击或向不可见元素发送键。
如果您真的想更改隐藏元素的值,唯一的方法是通过 execute_script
使用 JS,但很可能不会生成事件三元组是 expecting/using。一个更好的解决方案是弄清楚用户将与哪些可见元素交互并直接与它们交互。带有 selenium 的 Capybara 确实支持在可见的 contenteditable 元素上调用 set
,这是 trix 似乎正在使用的(以及自定义元素)所以像
find(:css, 'trix-editor').set("New text")
可能适合你
我在我的应用程序中使用 Trix WYSIWYG editor。对于我的水豚测试:我要填写编辑器。
我发现这篇文章:How to test basecamp's trip editor... 看起来很有希望。不幸的是,它一直给我这个错误:
Selenium::WebDriver::Error::ElementNotVisibleError: element not visible
所以看起来 Capybara 发现元素没问题,但它只是没有与之交互,因为 Capybara 必须有一些默认设置才能不与 hidden/invisible 元素交互。
环顾四周后,我发现了这个 Whosebug 问题:Is it possible to interact with hidden elements with capybara。
来自post:我已经试过了:
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
简答:您不能使用 selenium
更长的答案:该错误是 selenium 阻止您与不可见元素交互,因为用户无法单击或向不可见元素发送键。
如果您真的想更改隐藏元素的值,唯一的方法是通过 execute_script
使用 JS,但很可能不会生成事件三元组是 expecting/using。一个更好的解决方案是弄清楚用户将与哪些可见元素交互并直接与它们交互。带有 selenium 的 Capybara 确实支持在可见的 contenteditable 元素上调用 set
,这是 trix 似乎正在使用的(以及自定义元素)所以像
find(:css, 'trix-editor').set("New text")
可能适合你