测试自动化-新指南

时间:2018-07-31 22:12:16

标签: ruby-on-rails rspec automated-tests cucumber capybara

我开始研究自动化,因此我重新开始了今天正在研究的应用程序。但是我有一个问题,我不确定如何解决,我想知道是否有人可以帮助我。

在系统上,当我单击显示的选项时,它会在浏览器中打开一个新选项卡,并重定向到该选项的页面。但是,自动化将继续在前一个选项卡上运行,而不会专注于新选项卡。

更好的例证: 我进入站点X,有4种不同的登录选项(Y,P,T,O) 我单击Y选项,它会打开一个指向选项Y登录屏幕的新选项卡 但是自动化程序始终在X选项卡上运行,它不关注新选项卡,因此我可以登录到Y屏幕

如果我单击其他选项,它还会为他们打开一个新的登录指南。

从我编写测试的方式来看,它构成了完整的流程。...从访问站点X,选择Y,然后登录,但是他没有表现出对本指南的关注。

有可能这样做吗?如果是这样,有人会提示如何做吗?

我正在执行的自动化是红宝石,水豚和黄瓜

1 个答案:

答案 0 :(得分:1)

如果要交换到新的选项卡/窗口,则必须告诉它执行此操作。在水豚中可以执行此操作的两种方法是within_window-https://www.rubydoc.info/gems/capybara/Capybara/Session#within_window-instance_method-和switch_to_window-https://www.rubydoc.info/gems/capybara/Capybara/Session#switch_to_window-instance_method。通常最好使用within_window,因为正常的流程是移至新窗口,做几件事,然后返回原始窗口。但是,在使用Cucumber时,可能无法设置好的步骤来很好地嵌套一个块,因此您可能需要使用switch_to_window并自己处理切换回原始窗口

您首先使用哪种方法始于使用window_opened_by-https://www.rubydoc.info/gems/capybara/Capybara/Session#window_opened_by-instance_method

获取新窗口
new_window = page.window_opened_by do
  # perform whatever actions in the original window lead to creating a new tab/window
  page.click_on 'whatever'
end

然后,如果使用within_window,它将类似于

page.within_window(new_window) do
  # perform actions in the new tab/window
  page.click_on 'something'
end
new_window.close # when done with the new tab/window

如果使用switch_to_window,则类似于

orig_window = page.current_window # get the current window object
page.switch_to_window(new_window)
# perform actions in the new tab/window
page.click_on 'something'
# return to the original window
page.switch_to_window(orig_window)
new_window.close