gpt4 book ai didi

ruby - 如何使用相同的浏览器窗口使用 selenium-webdriver (ruby) 进行自动化测试?

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:40 24 4
gpt4 key购买 nike

我正在使用 ruby​​ 中的 selenium-webdriver 和 cucumber 为网站自动化测试用例。我需要每个功能以特定顺序运行并使用相同的浏览器窗口。 Atm 每个功能都会创建一个新窗口来运行测试。尽管在某些测试用例中需要这种行为,但在许多情况下并非如此。从我目前的研究来看,关于是否可以在整个测试用例中使用 selenium 驱动同一个浏览器窗口,似乎有不同的答案。我遇到的大多数答案都是针对其他语言的,并且是特定于浏览器的变通方法(我在测试 IE 的同时开发我的测试,但预计会在其他浏览器中运行这些测试)。我在 Ruby 工作,从我读到的内容来看,我似乎必须为该页面创建一个类?我对为什么必须这样做或这样做有何帮助感到困惑。

我的 env.rb 文件:

require 'selenium-webdriver'
require 'rubygems'
require 'nokogiri'
require 'rspec/expectations'

Before do

@driver ||= Selenium::WebDriver.for :ie
@accept_next_alert = true
@driver.manage.timeouts.implicit_wait = 30
@driver.manage.timeouts.script_timeout = 30
@verification_errors = []
end

After do
#@driver.quit
#@verification_errors.should == []
end

到目前为止,我从有类似问题的人那里收集到的一些信息: https://code.google.com/p/selenium/issues/detail?id=18 Is there any way to attach an already running browser to selenium webdriver in java?

如果我的问题有任何不清楚的地方,请问我。我还有很多测试要创建,但如果我的基础草率且缺少所需的功能,我不想继续创建测试。 (如果您发现我的代码中有任何其他问题,请在评论中指出)

最佳答案

Before钩子(Hook)在每个场景之前运行。这就是每次打开一个新浏览器的原因。

改为执行以下操作(在 env.rb 中):

require "selenium-webdriver"

driver = Selenium::WebDriver.for :ie
accept_next_alert = true
driver.manage.timeouts.implicit_wait = 30
driver.manage.timeouts.script_timeout = 30
verification_errors = []

Before do
@driver = driver
end

at_exit do
driver.close
end

在这种情况下,浏览器将在开始时打开(在任何测试之前)。然后每个测试都会获取该浏览器并继续使用它。

注意:虽然在测试中重复使用浏览器通常是可以的。您应该小心需要以特定顺序运行的测试(即变得依赖)。依赖测试可能难以调试和维护。

关于ruby - 如何使用相同的浏览器窗口使用 selenium-webdriver (ruby) 进行自动化测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17623691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com