测试自动化 - 新指南
Test Automation - New guide
我开始研究自动化,所以我开始研究我今天使用的一个应用程序。但是我有一个问题,我不确定如何解决,我想知道是否有人可以帮助我。
在系统上,当我单击显示的选项时,它会在浏览器中打开一个新选项卡,重定向到单击选项的页面。但是,自动化会继续 运行 上一个选项卡,而不关注新选项卡。
更好地举例说明:
我进入站点 X,有 4 个不同的登录选项(Y、P、T、O)
我单击 Y 选项,它会打开一个新选项卡,指向选项 Y 的登录屏幕
但是自动化在 X 选项卡上保持 运行ning,它不关注新选项卡所以我可以登录到 Y 屏幕
如果我点击其他选项,它还会为它们打开一个新的登录指南。
从我编写测试的方式来看,它使整个流程...从访问站点 X,select Y 然后登录,但他没有执行,因为没有关注这个新的指南.
可以吗?如果是这样,有人会提示如何操作吗?
我正在做的自动化是 ruby、水豚和黄瓜
如果您想换成新的 tab/window,您必须告诉它这样做。允许您在 Capybara 中执行此操作的两种方法是 within_window
- https://www.rubydoc.info/gems/capybara/Capybara/Session#within_window-instance_method - and switch_to_window
- https://www.rubydoc.info/gems/capybara/Capybara/Session#switch_to_window-instance_method 。通常 within_window
是首选,因为正常流程是移动到新的 window,做一些事情,然后 return 到原来的 window。但是,当使用 Cucumber 时,可能无法设置用于很好地嵌套块的步骤,因此您可能需要使用 switch_to_window
并自己处理切换回原始 window
无论您首先使用哪种方法,首先使用 window_opened_by
- https://www.rubydoc.info/gems/capybara/Capybara/Session#window_opened_by-instance_method
获取新的 window
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
我开始研究自动化,所以我开始研究我今天使用的一个应用程序。但是我有一个问题,我不确定如何解决,我想知道是否有人可以帮助我。
在系统上,当我单击显示的选项时,它会在浏览器中打开一个新选项卡,重定向到单击选项的页面。但是,自动化会继续 运行 上一个选项卡,而不关注新选项卡。
更好地举例说明: 我进入站点 X,有 4 个不同的登录选项(Y、P、T、O) 我单击 Y 选项,它会打开一个新选项卡,指向选项 Y 的登录屏幕 但是自动化在 X 选项卡上保持 运行ning,它不关注新选项卡所以我可以登录到 Y 屏幕
如果我点击其他选项,它还会为它们打开一个新的登录指南。
从我编写测试的方式来看,它使整个流程...从访问站点 X,select Y 然后登录,但他没有执行,因为没有关注这个新的指南.
可以吗?如果是这样,有人会提示如何操作吗?
我正在做的自动化是 ruby、水豚和黄瓜
如果您想换成新的 tab/window,您必须告诉它这样做。允许您在 Capybara 中执行此操作的两种方法是 within_window
- https://www.rubydoc.info/gems/capybara/Capybara/Session#within_window-instance_method - and switch_to_window
- https://www.rubydoc.info/gems/capybara/Capybara/Session#switch_to_window-instance_method 。通常 within_window
是首选,因为正常流程是移动到新的 window,做一些事情,然后 return 到原来的 window。但是,当使用 Cucumber 时,可能无法设置用于很好地嵌套块的步骤,因此您可能需要使用 switch_to_window
并自己处理切换回原始 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