如何使用selenium-webdriver(ruby)使用相同的浏览器窗口进行自动测试?
我正在使用selenium-webdriver和ruby中的黄瓜自动化网站的测试用例。 我需要每个function以特定顺序运行并使用相同的浏览器窗口。 每个function都会创建一个新窗口来运行测试。虽然在某些测试用例中需要这种行为 – 但在许多情况下并非如此。 从我的研究到目前为止,似乎有关于是否可以在整个测试用例中使用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 有没有办法将已运行的浏览器附加到java中的selenium webdriver ?
如果我的问题有任何不清楚的地方,请问我问题。 我有更多的测试要创建,但如果我的基础很草率并且缺少所请求的function,我不想继续创建测试。 (如果您发现我的代码中有任何其他问题,请在评论中指出)
Before
钩子在每个场景Before
运行。 这就是每次打开新浏览器的原因。
改为执行以下操作(在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
在这种情况下,浏览器将在开始时(在任何测试之前)打开。 然后每个测试将抓取该浏览器并继续使用它。
注意:虽然通常可以跨测试重新使用浏览器。 您应该注意需要按特定顺序运行的测试(即变得依赖)。 相关测试很难调试和维护。
我在创建spec_helper文件时遇到了类似的问题。 我为我的目的做了以下(为本地运行的firefox简化),它非常非常可靠地工作。 RSpec将为_spec.rb文件中的所有块使用相同的浏览器窗口。
Rspec.configure do |config| config.before(:all) do @driver = Selenium::WebDriver.for :firefox end config.after(:all) do @driver.quit end end
如果切换到:each
而不是:all
,则可以为每个断言块使用单独的浏览器实例…再次,使用:each
RSpec将为每个断言块提供一个新的浏览器实例。 两者都有用,具体取决于具体情况。
- SSL_connect SYSCALL返回= 5 errno = 0 state = SSLv3读取服务器hello A(OpenSSL :: SSL :: SSLError)
- 在Ruby中制作计时器
- Rails:如何连接到旧的PostgreSQL(你的PostgreSQL版本(70417)太旧了,请升级!)
- RVM与JRuby 1.7.0“未知的Ruby解释器”
- 如何格式化ruby logger?
- emacs-rails vs rinari?
- 使用Ruby(IRB)打印CP850编码的字符串
- 为什么脚本会影响我的Rails 3应用程序上的所有内容,即使在此代码中也是如此?
- jekyll-github-metadata中的SSL证书validation失败