水豚集成测试 'TextAngular' 输入
Capybara integration testing 'TextAngular' input
在AngularJS/ Rails
环境中使用TextAngular 富文本输入框。
运行 与 Capybara/Selenium & Capybara-Webkit
的集成测试。
试图创建一个集成测试,将文本输入文本区域进行测试。但是,我无法成功地做到这一点。
阻止我的是每次测试加载或页面加载时文本输入框 ID 都会更改。所以我使用了下面的 class,它在文本 angular 测试中使用。有:
find('textarea.ta-html.ta-editor')
我使用它是因为我知道它有效,并且为文本 angular 编写的 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
为文本区域设置值?
匹配 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 元素交互,而不能与在其中创建的子元素交互。我不确定其他水豚驱动程序是否有同样的问题。
在AngularJS/ Rails
环境中使用TextAngular 富文本输入框。
运行 与 Capybara/Selenium & Capybara-Webkit
的集成测试。
试图创建一个集成测试,将文本输入文本区域进行测试。但是,我无法成功地做到这一点。
阻止我的是每次测试加载或页面加载时文本输入框 ID 都会更改。所以我使用了下面的 class,它在文本 angular 测试中使用。有:
find('textarea.ta-html.ta-editor')
我使用它是因为我知道它有效,并且为文本 angular 编写的 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
为文本区域设置值?
匹配 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 元素交互,而不能与在其中创建的子元素交互。我不确定其他水豚驱动程序是否有同样的问题。