【问题标题】:Page object 'wait_for_present' error without that method present没有该方法的页面对象“wait_for_present”错误
【发布时间】:2017-10-23 19:47:34
【问题描述】:

在运行一些 Ruby/Cucumber 代码时,我遇到了一个奇怪的错误。

运行此代码时:

def navigate_to_expense(expense)
  on_page(HomePage).click_top_tab('Expenses')
  on_page(HomePage) do |page|
    recent = "Expense: #{expense.description}"
    if page.recent_items.any? { |i| i[recent] }
      page.click_recent_item(recent)
    else
      on_page(ExpenseSearchPage) do |page|
        page.advanced_search
        page.search_my_expense(expense)
        page.open_search_result(expense)
      end
    end
  end
end

和#click_top_tab:

  def click_top_tab(name)
    if element_exists?(top_tab_link(name))
      top_tab_link(name).click
      click_top_tab(name) unless on_tab?(name)
    else
      link_element(id: 'LINK_menu_services').hover
      div_element(class: 'quciklinkdropdiv_globaldirectory', id: 'dropmenu1').link_element(text: name).click
    end
  end

我遇到了以下错误:

When I edit the expense                               # features/step_definitions/expense_steps.rb:156
  undefined method `wait_for_present' for #<Watir::Browser:0x42d7940> (NoMethodError)
  ./features/support/env.src/team_connect_page.rb:37:in `click_top_tab'
  ./features/step_definitions/expense_steps.rb:100:in `navigate_to_expense'
  ./features/step_definitions/expense_steps.rb:157:in `/^I edit the expense$/'
  features/scenarios/expenses.feature:16:in `When I edit the expense'

第 37 行是 link_element(id: 'LINK_menu_services').hover 行。如您所见,代码中没有.wait_until_present,因此我假设错误出现在底层页面对象代码中。如果是这种情况,我无法在已知错误中找到它。如果是我的代码,我完全不知道它可能在哪里?

【问题讨论】:

  • 您使用的是什么版本的 Page-Object 和 Watir?
  • Watir 为 6.4.1,Page-Object 为 2.1.1
  • 我仍然无法重现该问题。你能尝试创建一个重现问题的最小示例吗?
  • 我不确定如何执行此操作。我是否只是编写一些查看随机网页的代码?
  • 我建议您看看是否可以仅使用相关的 Watir 命令(即删除 Cucumber 和 Page-Object)在您的应用程序上重现该问题。假设该问题可以通过 Watir 代码重现,请查找或创建一个可共享页面,您可以针对该页面运行相同的脚本。

标签: ruby watir page-object-gem


【解决方案1】:

由于我看不到您的整个项目,因此我不能肯定地说,但是看起来错误发生在 HomePage 内的 initialize_page 内或它继承自的类内。我会去那里看看。

这只是一个猜测,但看起来有人尝试修复竞争条件并意外放入 wait_for_present 而不是 wait_直到_present。

【讨论】:

  • 那根本不在我的项目空间中。看起来这是页面对象或 watir 代码中的错误,尽管我还没有机会尝试重现它。
猜你喜欢
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多