gpt4 book ai didi

selenium - Capybara、Selenium 和 Redactor 富文本编辑器

转载 作者:行者123 更新时间:2023-12-01 10:02:17 25 4
gpt4 key购买 nike

我在 Capybara 和 Selenium 上遇到了一个有趣的问题。我有一些 Capybara 请求规范,要求在完成表单时启用 javascript。其中一种形式是使用 Redactor Rich Text Editor 的 textarea。

<div class="control-group">
<%= f.label :description, "Description", class: "control-label" %>
<div class="controls">
<%= f.text_area :description, rows: 10, class: "redactor"%>
</div>
</div>

当测试运行并且 Selenium 触发时(在 FF 和 Chrome 驱动程序中),Selenium 在以下命令上失败:
`fill_in "Description", with: "some description"`

它返回的错误是:
Selenium::WebDriver::Error::InvalidElementStateError:
Element is not currently interactable and may not be manipulated

Selenium 似乎无法再识别富文本编辑器/文本区域了。如果我删除触发 Redactor JS 渲染描述文本区域的 class="redactor",它工作正常。

所以我的问题是, 1. 是否有解决方法来填写它? 2. 或者,我可以以某种方式为这个测试禁用 redactor js 吗?

最佳答案

看起来 capybara 将包括填充 contenteditable div 的能力(请参阅 https://github.com/jnicklas/capybara/pull/911 )。

同时,我使用以下内容:(您的场景需要 :js => true )

# fill_in_redactor :in => find(".text1"), :with => "Hello world"
def fill_in_redactor(options)
if options[:in]
parent = "('#{options[:in]}').find"
else
parent = ""
end

page.execute_script( "$#{parent}('.redactor_editor').html('#{options[:with]}')" )
page.execute_script( "$#{parent}('.redactor').html('#{options[:with]}')" )
end

def no_redactor
page.execute_script("$('.redactor').destroyEditor();");
end

关于selenium - Capybara、Selenium 和 Redactor 富文本编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14522795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com