2013-04-12 10 views
20

Làm cách nào để kiểm tra nội dung html trên trang có capybara?Capybara: phải có nội dung html

page.should have_text('this is <b>bold</b> "text"') 

đầu ra:

 
Failure/Error: page.should have_text('this is <b>bold</b> "text"') 
    expected there to be this is <b>bold</b> \"text\" in "....this is bold \"text\"....." 
+0

bản sao có thể có của [Làm cách nào để nhận HTML trong phần tử sử dụng Capybara?] (Http://stackoverflow.com/questions/4071937/how-do-i-get-the-html-in-an-element -using-capybara) –

Trả lời

28

Mã của bạn không hoạt động như has_text? (và do đó have_text) Phương pháp kiểm tra văn bản Capybara, chứ không phải nguồn html của phần tử nó được gọi về.

Nếu bạn sử dụng trình điều khiển hỗ trợ đánh giá Javascript (ví dụ như Selenium, Poltergeist hoặc Capybara-Webkit), bạn có thể nhận được HTML bên trong của phần tử sử dụng Javascript:

html = page.evaluate_script("document.getElementById('answer-15988092').innerHTML") 
html.should include('this is <b>bold</b> "text"') 

Nếu bạn muốn khẳng định rằng toàn bộ mã HTML của trang chứa phần tử bạn có thể sử dụng phương thức html trả về nguồn trang:

page.html.should include('this is <b>bold</b> "text"') 

Thông thường tôi thích javascript đánh giá vì nó hạn chế hơn.

+0

Tôi đã thử một số thành phần hợp lệ lên đến và bao gồm 'id',' div # id' và 'body'. Trong mỗi trường hợp, tôi nhận được từ chối này 'lỗi không xác định: Không thể đọc thuộc tính innerHTML của null' – TangibleDream