【问题标题】:Capybara error: Selenium::WebDriver::Error::ElementNotVisibleError: element not visibleCapybara 错误:Selenium::WebDriver::Error::ElementNotVisibleError:元素不可见
【发布时间】:2017-11-10 14:51:43
【问题描述】:

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

我找到了这篇文章:How to test basecamp's trip editor...,看起来很有希望。不幸的是,它一直给我这个错误:

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

因此,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 填写编辑器吗?对于它的价值:我正在使用rails 5.1.1chromedriver=2.29.461585

【问题讨论】:

  • 用户如何与隐藏元素交互?你的规格测试是为了什么?它应该运行使该元素可见所需的任何代码,即用户为使其可见所做的任何事情
  • @DiegoSalazar 我更新了我的问题。最终我想弄清楚如何用 Capybara 填写编辑器。我走的路径使它看起来好像无法直接填充编辑器,所以唯一的选择是让 Capybara 填充隐藏元素。为了让它发挥作用,我现在正在研究 Thomas 的答案。

标签: ruby-on-rails ruby selenium selenium-webdriver capybara


【解决方案1】:

简答:你不能使用硒

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

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

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

可能对你有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2015-05-03
    • 1970-01-01
    相关资源
    最近更新 更多