水豚集成测试"文本角度"输入



AngularJS/ Rails环境中为富文本输入框使用TextAngular。

使用Capybara/Selenium & Capybara-Webkit运行集成测试。尝试创建一个集成测试,将文本输入到测试的文本区域。然而,我没能成功地做到这一点。

阻止我的是,每当加载测试或页面时,文本输入框id都会发生更改。所以我使用了下面的类,它用于文本角度测试。带有:

find('textarea.ta-html.ta-editor')

我使用了它,因为我知道它是有效的,为文本angular编写的javascript测试也使用了它。文本角度github测试

然而,当我尝试用文本值设置文本区域时:

find('textarea.ta-html.ta-editor').set("Upgraded to SSD")

我得到:

失败/错误:find('textarea.ta html.ta editor').set("已升级到SSD")
Selenium::WebDriver::Error::ElementNotVisibleError:元素当前不可见,因此可能无法与交互

如何使用Capybara设置文本区域的值?

textarea.ta-html.ta-editor匹配的元素隐藏在页面上,不是用户交互的元素。根据设计,Capybara通常要求您与用户将要交互的元素交互,因此您需要在可见元素上调用#set,该元素是您尝试交互的元素的前一个同级元素,并且与div[contenteditable]匹配。你不显示你的HTML,但希望你有一个包含元素,你可以进行

find('<container_selector> div[contenteditable]').set(...)

find('<more_general_container_selector>', text: '<label text or something else in the container>').find('div[contenteditable]').set(....)

如果你在页面上只有一个这种类型的字段,你可能会逃脱

find('.text-angular div[contenteditable]').set('Upgraded to SSD')

注意:如果使用selenium驱动程序,它有一个限制,即它只能与主要的contenteditable元素交互,而不能与在其中创建的子元素交互。我不确定其他水豚驱动程序是否也有同样的问题。

最新更新