早上好,我正在尝试在使用引导程序的(设计电子邮件)视图中查找特定文本。我的水豚版本是3.6。 CSS 选择器是:
body > table > tbody > tr > td > table > tbody > tr > td > table > tbody > tr:nth-child(3) > td > b
我想在所有内容的末尾找到的文字是
"example text"
我尝试过以下方法:
click_button "Sign up"
#CapybaraEmail, not currently used beyond this point yet
open_email('test@example.com')
#current_email.save_and_open
last_email = ActionMailer::Base.deliveries.last
expect(last_email.to).to eq ['test@example.com']
这是我尝试过但失败的方法:
expect(last_email).to have_css('b', text: "example text")
expect(last_email).to have_css("body > table > tbody > tr > td > table > tbody > tr > td > table > tbody > tr:nth-child(3) > td > b", :text => "example text")
我认为语法是错误的。我还假设,如果没有正则表达式,任何元素内的文本都必须准确,否则就会失败,而不能只是一个块。
基本上,我只想在页面上找到一些文本,否则不包含任何带有 id 的元素。我已经走了 id 路线,基本上我必须手动在我想测试的每个页面上的元素上放置一个 id,但现在我已经完成了所有这些。
如何在电子邮件视图中查找随机文本?
一旦我学会了这一点,我相信我将达到水豚2级。
last_email
不是一个HTML文档,它是一个包含很多字段的对象,所以你不能直接与Capybara一起使用它。检查该对象并查看其中的内容以及电子邮件的实际 HTML 所在位置(假设它确实有 HTML 部分,而不仅仅是文本电子邮件??)。这可能是类似的事情
expect(last_email.html_part.body.to_s).to have_css('b', text: "example text")
可能有效,但如果您使用的是 capybara-email,那么只需使用它来执行此操作,如自述文件中所述 - https://github.com/DavyJonesLocker/capybara-email#readme