在 rspec 中使用 element_name 文本匹配 when_visibile

using element_name text in rspec match when_visibile

我有一个页面对象,其中我将元素定义为

class ProjectCreate
  include  PageObject

  div(:feedback, :class => 'feedback_valid')
  button(:save, :text => 'Save', :index => 0)
 end

我正在使用 rpsec 并试图等待 feedback_element 可见,然后在我的匹配中使用来自 div 元素的文本。这是我的测试..

describe 'Add Project' do
  it 'Provided Form Sucessfully' do
    on(ProjectCreate) do |page|
    page.set_client('add_project/valid')
    page.save
    expect(page.feedback_element.when_present.feedback).to match /Form successfully saved/
  end
end 

但是我收到了这个错误。

NoMethodError: undefined method `feedback' for #<Watir::Div:0x3b86f50>

我认为通过按名称调用 div 元素,它会 return 文本,我可以在我的期望匹配中使用它。

有没有想过我哪里出错了?

when_present方法returns它等待的元素。该元素没有 feedback 方法;它是页面对象。

您可以获取 when_present 返回的元素的 text:

expect(page.feedback_element.when_present.text).to match /Form successfully saved/

或者您可以等待反馈元素,然后检查 feedback 文本的值:

page.feedback_element.when_present
expect(page.feedback).to match /Form successfully saved/