无法使用水豚找到文字

问题描述 投票:0回答:1

早上好,我正在尝试在使用引导程序的(设计电子邮件)视图中查找特定文本。我的水豚版本是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('[email protected]')

#current_email.save_and_open
    
last_email = ActionMailer::Base.deliveries.last
    
expect(last_email.to).to eq ['[email protected]']

这是我尝试过但失败的方法:

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级。

rspec css-selectors capybara
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.