Проверьте текст определенного значения CSS, используя капибару + селен - PullRequest
0 голосов
/ 24 декабря 2018

Я должен проверить текст определенного значения CSS.

HTML как -

    <table class="resp_card_table company-dashboard">
     <thead>...</thead>
     <tbody>
      <tr ng-repeat="company in company | filter:searchString" class="ng-scope">
       <td data-label="Company Name" class="ng-binding">ABC Constructions</td>
      </tr>
     </tbody>
    </table>

Я должен проверить "Название компании", чтобы иметь текст "ABC Constructions""

Как я могу сделать это, используя оператор ожидания?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Если вы пытаетесь сделать это в спецификации вида, тогда ответ по aridlehoover будет правильным.Однако в спецификации объекта / системы (где вы обычно используете селен с капибарой) тогда будет

expect(page).to have_css('td[data-role="Company Name"]', text: 'ABC Constructions')

Обратите внимание, что текстовая опция будет (по умолчанию) соответствовать подстрокам (содержит, а не равно), поэтому он также будет соответствовать элементу с текстовым содержимым «ABC Constructions Company».Если вы хотите точно подобрать «ABC Constructions», вы можете набрать

expect(page).to have_css('td[data-role="Company Name"]', text: 'ABC Constructions', exact_text: true)

или более кратко

expect(page).to have_css('td[data-role="Company Name"]', exact_text: 'ABC Constructions')
0 голосов
/ 24 декабря 2018

Из репозитория Capybara: https://github.com/teamcapybara/capybara#using-capybara-with-rspec

... Сопоставители Capybara также поддерживаются в спецификациях представления:

RSpec.describe "todos/show.html.erb", type: :view do
  it "displays the todo title" do
    assign :todo, Todo.new(title: "Buy milk")
    render

    expect(rendered).to have_css("header h1", text: "Buy milk")
  end
end

Учитывая ваш HTML, попробуйте это:

expect(rendered).to have_css(
  'td[data-role="Company Name"]', text: 'ABC Constructions'
)
...