2012-12-12 32 views
9

Cố gắng làm cho thử nghiệm này thất bại mà không thành công.Capybara: cách kiểm tra giá trị TEXT của một phần tử với xpath và css?

Tôi đã có HTML này:

<div id="navigation"> 
<ul> 
    <li> 
    <a href="/url">TV</a> 

Và sau đó tôi đã cố gắng để xác định nội dung của nguyên tố A và làm cho nó thất bại vào lúc này.

Tôi đã sử dụng tất cả các khái niệm sau với XPath nhưng tất cả trong số họ luôn luôn đi mặc dù tôi đang sử dụng một văn bản khác cho việc so sánh: S

page.should have_xpath("//div[@id='navigation']//a", :content => 'Radio') 
page.should have_xpath("//div[@id='navigation']//a", :text => 'Radio') 
page.should have_xpath("//div[@id='navigation']//a[contains(string(),'Radio')]") 
page.should have_xpath("//div[@id='navigation']//a[contains(text(),'Radio')]") 
page.should have_xpath("//div[@id='navigation']//a[contains(.,'Radio')]") 

Bất kỳ ý tưởng làm thế nào tôi có thể xác định nội dung của một phần tử HTML cụ thể với capybara? và ... có thể đạt được điều tương tự với CSS không?

Chúc mừng!

Trả lời

9

Nó chỉ ra rằng có một yếu tố khác với văn bản 'Radio' trong 'điều hướng' DIV, do đó đã gây ra thử nghiệm thất bại.

Để tham khảo trong tương lai, xác định các yếu tố 1 cách rõ ràng cư xử như mong đợi và thất bại khi thử nghiệm:

page.first('div#navigation a').text.should == 'Radio') 
page.first('div#navigation a').text.should eq('Radio') 
page.first('div#navigation a').text.should match('Radio') 
page.first('div#navigation a').text.should be('Radio') 
0

Nó sẽ giúp bạn:

page.should have_css ('div # điều hướng a ',: text ==' Radio ')

dùng thử.

+2

Tôi nghĩ có lỗi đánh máy. ': text == 'Radio'' phải là': text =>' Radio'' – Eva

8

Tính đến RSpec 2.11 (tháng 7 năm 2012), cách ưa thích là sử dụng expect cú pháp:

expect(page).to have_css("#navigation a", text: "Radio") 

Bạn có thể configure RSpec chỉ chấp nhận cú pháp mới này để giữ codebase của bạn nhất quán.

+2

Tôi đang đọc cái này vào năm 2016, mặc dù ... – eltiare

+4

Haha, ngoại lệ chưa được giải quyết. Đã sửa! –

0

Đặt mục này vào đây để tôi có thể tìm thấy nó vào lần tiếp theo khi tôi chạy vào phần này. : P

html của tôi trông như thế này:

<a href="https://foo.com" id="foo-link">@foo</a> 

Tôi muốn tìm các văn bản và url giá trị và khẳng định rằng họ là chính xác. Sử dụng Capybary 2.16, Rails 5.1 và minitest dưới đây là cách tôi đã làm điều đó:

assert_selector 'a#foo-link[href="https://foo.com"]', text: '@foo' 

Nếu ID, văn bản hoặc giá trị href thay đổi thử nghiệm sẽ thất bại.

Các vấn đề liên quan