2016-04-12 49 views
1

使用TextAngularAngularJS/ Rails环境中的富文本输入框。水豚一体化测试'TextAngular'输入

运行集成测试Capybara/Selenium & Capybara-Webkit。 试图创建一个集成测试,将文本输入文本区域进行测试。但是,我无法成功地做到这一点。

阻止我的事情是文本输入框ID在测试加载或页面加载时发生变化。所以我使用了下面的类,它在文本角度测试中使用。随着:

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

我用这个,因为我知道它的作品和JavaScript测试书面文字角使用此。 text angular github tests

然而,当我试着和文本值设置文本区域:

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

我得到:

Failure/Error: find('textarea.ta-html.ta-editor').set("Upgraded to SSD")
Selenium::WebDriver::Error::ElementNotVisibleError: Element is not currently visible and so may not be interacted with

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

回答

1

匹配textarea.ta-html.ta-editor的元素隐藏在页面上,而不是用户与之交互的元素。通过设计,水豚通常需要您与用户进行交互的元素进行交互,因此您需要在可见元素上调用#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') 

注意:如果使用它有一个限制,它只能与主CONTENTEDITABLE元素进行交互,而不是与获得创建INSI孩子硒司机去吧。我不确定其他水豚司机是否有同样的问题。

+0

汤姆灿烂和干净的解决方案。可以使用Capybara/Selenium设置文本:find('div.ta-text.ta-editor div [contenteditable]')。set(“Upgraded to SSD”) – orion