【发布时间】: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