当前位置: 首页 > 面试题库 >

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

曾光远
2023-03-14
问题内容

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

我的env.rbhtml" target="_blank">文件:

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中的SeleniumWebdriver ?

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


问题答案:

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

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

注意:虽然通常可以跨测试重用浏览器。您应该谨慎对待需要按特定顺序运行的测试(即成为依赖项)。依赖测试可能难以调试和维护。



 类似资料:
  • 在我的脚本中,我打开浏览器的私有窗口来验证网站中的某些内容。下面是示例代码: 当我在本地(mac)机器上执行这些测试用例时,或者当Jenkins在Windows服务器上本地执行这些测试用例时,这些代码可以正常工作。但现在,当我在browserstack虚拟机上运行脚本时,我面临的挑战是。我的本地机器是Mac,当我尝试在Windows(虚拟)机器上运行某些东西时,它会尝试在键盘上查找命令按钮,测试用

  • 我们在2000年左右有一组自动化测试用例,我们需要每天在每一个新的构建上运行它们。目前在一台机器上完成测试需要4个小时。为了减少这一点,我们计划通过启动多个相同类型的浏览器,在同一台机器上分批运行测试(每批500个)。假设每个测试套件有4个firefox浏览器会话。所以它可以在1小时内完成。使用selenium webdriver和TestNG可以实现吗?请建议。

  • 问题内容: 有什么方法可以将WebDriver(Selenium 2)与C#结合使用来最大化浏览器窗口? 问题答案: 将此功能添加到WebDriver时存在一个突出的问题,可以在此处进行跟踪:http : //code.google.com/p/selenium/issues/detail? id=174 一种解决方法是使用以下方法:

  • 问题内容: 我正在尝试使用selenium for python在浏览器中打开一个新选项卡或一个新窗口。如果打开新的选项卡或新窗口并不重要,仅打开浏览器的第二个实例才很重要。 我已经尝试了几种不同的方法,但都没有成功。 切换到一个不存在的窗口,希望它在找不到该窗口时会打开一个新窗口: 通过打开的窗口进行迭代(尽管目前只有一个) 尝试模拟键盘按键 driver.send_keys(Keys.CONT

  • 我目前正在尝试使用Selenium WebDriver(JAVA)2.53和Firefox 43.0执行TOR 6.0.4。我已经按照这篇文章的说明使用Selenium WebDriver和Tor,但在将Tor的profilePath加载到Firefox二进制文件时,我遇到了一个错误。我已经看到可以通过加载TOR配置文件来访问TOR。firefox二进制文件的默认存档,但我得到了一个驱动程序信息: