我想测试单击单元格时,特定的tr
元素是否添加了一个selected
css类。我想通过文本识别特定行,然后单击该行中的一个单元格,然后检查其CSS类。
在整个页面中检查此CSS的这段代码似乎有效:
row = find(:xpath, "//tr[contains(., 'My Text')]")
cell = find(:xpath, "//tr[contains(., 'My Text')]/td")
expect(page).to_not have_css("tr.selected") # success
cell.click
expect(page).to have_css("tr.selected") # success
...但是我想将搜索范围限制为特定的行对象。这段代码永远找不到我要寻找的CSS,并且总是使最后一个expect
失败。
row = find(:xpath, "//tr[contains(., 'My Text')]")
cell = find(:xpath, "//tr[contains(., 'My Text')]/td")
expect(row).to_not have_css("tr.selected")
cell.click
expect(row).to have_css("tr.selected") # fails
当我在row[:class]
之后查看click
时,在其类列表中看到“已选择”。如何正确限制测试以仅在特定行中寻找.selected
类?
答案 0 :(得分:1)
have_css
检查后代,检查您想要的当前元素match_css
row = find(:xpath, "//tr[contains(., 'My Text')]")
cell = row.find('td')
expect(row).to_not match_css("tr.selected")
cell.click
expect(row).to match_css("tr.selected")
此外,如果您不需要使用XPath
row = find('tr:not(.selected)', text: 'My Text')
row.find('td').click
expect(row).to match_css('tr.selected')
阅读更好