Rspec + Capybara:使用 xpath 验证 select 选项
Rspec + Capybara: Validating select options using xpath
我有一个 HTML 文档(有一个 ID 为 "countries" 的 DIV 包装了下面的代码),我需要 -
验证 select 中的选项。我试过了,但这无效。
expect(page).to have_xpath(('//*[@id="countries"]//select')[1],
:options => ['US CAN GER POL'])
验证第二个 select 被禁用
验证 CAN 在第一个 select
中被禁用
验证 POL 在第一个 selectselect
中被编辑
在第一个 select
中将 selected 选项更改为 GER
<li>
<fieldset>
<select>
<option value="US">USA</option>
<option value="CAN" disabled>Canada</option>
<option value="GER">Germany</option>
<option value="POL" selected>Poland</option>
</select>
<fieldset>
<li>
<li>
<fieldset>
<select disabled>
<option value="US">USA</option>
<option value="CAN">Canada</option>
<option value="GER">Germany</option>
<option value="POL">Poland</option>
</select>
<fieldset>
<li>
感谢您提供的任何帮助。谢谢!
警告,我个人仍然使用 rspec 的 should
语法,并且我还使用 css 选择器与 xpath。我只是觉得它们更容易阅读。
(1) 因为您有两个下拉菜单没有任何特定的 ID 或 class 名称来区分彼此,我会使用 all
来限制您期望的上下文
all('#countries select')[0].should have_text('USA Canada Germany Poland')
(2)同上概念,限制范围。第二个字段集应包含禁用的下拉列表。
all('#countries fieldset')[1].should have_css('select[disabled]')
(3) all('#countries select')[0].should have_css('option[disabled]', :text => 'Canada')
(4) 与 #3 相同的答案,但具有不同的属性和文本
(5) all('#countries select')[0].find('option', :text => 'Germany').click
我有一个 HTML 文档(有一个 ID 为 "countries" 的 DIV 包装了下面的代码),我需要 -
验证 select 中的选项。我试过了,但这无效。
expect(page).to have_xpath(('//*[@id="countries"]//select')[1], :options => ['US CAN GER POL'])
验证第二个 select 被禁用
验证 CAN 在第一个 select
中被禁用
验证 POL 在第一个 selectselect
中被编辑
在第一个 select
中将 selected 选项更改为 GER<li> <fieldset> <select> <option value="US">USA</option> <option value="CAN" disabled>Canada</option> <option value="GER">Germany</option> <option value="POL" selected>Poland</option> </select> <fieldset> <li> <li> <fieldset> <select disabled> <option value="US">USA</option> <option value="CAN">Canada</option> <option value="GER">Germany</option> <option value="POL">Poland</option> </select> <fieldset> <li>
感谢您提供的任何帮助。谢谢!
警告,我个人仍然使用 rspec 的 should
语法,并且我还使用 css 选择器与 xpath。我只是觉得它们更容易阅读。
(1) 因为您有两个下拉菜单没有任何特定的 ID 或 class 名称来区分彼此,我会使用 all
来限制您期望的上下文
all('#countries select')[0].should have_text('USA Canada Germany Poland')
(2)同上概念,限制范围。第二个字段集应包含禁用的下拉列表。
all('#countries fieldset')[1].should have_css('select[disabled]')
(3) all('#countries select')[0].should have_css('option[disabled]', :text => 'Canada')
(4) 与 #3 相同的答案,但具有不同的属性和文本
(5) all('#countries select')[0].find('option', :text => 'Germany').click