用水豚填充文本框

Filling in text box with capybara

我有一个文本框,我想用水豚来填充它。我试着玩弄它并试图找出问题所在,但我的测试没有通过。

这是

针对这个特定的文本框:

<span class="ui-grid-header-cell-label ng-binding" ui-grid-one-bind-id-grid="col.uid + '-header-text'" id="14213131-uiGrid-0008-header-text">DOB</span>

<input type="text" class="ui-grid-filter-input ui-grid-filter-input-0 ng-touched" ng-model="colFilter.term" ng-attr-placeholder="{{colFilter.placeholder || ''}}" aria-label="Filter for column" placeholder="" aria-invalid="false" style="">

这是我的代码。

find('ui-grid-filter-input ui-grid-filter-input-0 ng-touched').set('1414234')

理想情况下,我试图找到这个特定的文本框并在其中输入内容。

要使用水豚填充 <input>,您可以使用以下任一方法 :

find('[aria-label=Filter for column]').set('1414234')

find('input[aria-label=Filter for column]').set('1414234')

作为 CSS 选择器 'ui-grid-filter-input ui-grid-filter-input-0 ng-touched' 正在寻找 ng-touched 元素,它是 ui-grid-filter-input-0 元素的后代,而 ui-grid-filter-input-0 元素是 [=15= 的后代] 元素 - 这显然不是你想要的。由于您尝试匹配 classes,因此您需要使用以 .

开头的 CSS class 选择器
find('.ui-grid-filter-input.ui-grid-filter-input-0.ng-touched') 

将是做你正在做的事情的正确方法,但是你可能并不真的需要所有这些 classes,而且你指定的越多,你的选择器就越脆弱。很可能只是

find('.ui-grid-filter-input-0').set('1414234')

会做你想做的 - 或者更好

find('.ui-grid-filter-input-0').fill_in(with: '1414234')