【问题标题】:Finding currently open browser (firefox) windows with Watir使用 Watir 查找当前打开的浏览器 (firefox) 窗口
【发布时间】:2016-09-26 20:34:43
【问题描述】:

我正在尝试编写一个脚本,该脚本将查找并使用在执行脚本之前已经打开的浏览器窗口(可以是 IE 或 Firefox)。 attach 方法适用于 IE,但不适用于 Firefox。

browser = Watir::Browser.attach(:url, /url.com/)

使用 Watir-Webdriver 我尝试了在其他地方发布的窗口切换技巧,但这似乎只有在您单击原始浏览器窗口中的链接时才有效。它似乎找不到在脚本运行之前已经打开的窗口。

其他地方博客上的用户社区告诉我,这只能通过 IE 和使用 watir 而不是 watir-webdriver 实现。 webdriver 有an issue opened at the selenium 问题跟踪器,但它已经开放了很长一段时间。

我希望有一个解决方法。有什么想法吗?

【问题讨论】:

  • 我不相信 webdriver 有解决方案。

标签: ruby window selenium-webdriver watir watir-webdriver


【解决方案1】:

Webdriver 不支持附加到现有进程,因此 watir-webdriver 也不支持

【讨论】:

    【解决方案2】:

    我在寻找相同问题的解决方案时发现了这一点。

    我的想法是使用 Sinatra 编写一个非常简单的 Ruby Web 服务,并让 that 将浏览器对象作为全局变量处理:

    require 'rubygems'
    require 'sinatra'
    require 'watir-webdriver'
    
    set :port, 9000
    
    get '/openbrowser' do
        $browser = Watir::Browser.new :ff
        $timeout_length = 30    
        $browser.driver.manage.window.maximize
    end
    
    get '/closebrowser' do 
        $browser.close
    end
    

    然后让第二个脚本向 web 服务发送 HTTP 请求,如下所示:

    require 'net/http'
    require 'uri'
    
    url = "http://localhost:9000/openbrowser" 
    uri = URI.parse(url)
    Net::HTTP.get(uri)
    sleep(5)
    
    url = "http://localhost:9000/closebrowser" 
    uri = URI.parse(url)
    Net::HTTP.get(uri)
    

    因此,您可以使用它打开浏览器,并根据需要将其与独立脚本一起使用,并在完成后将其关闭。

    坏消息是:如果你已经有了一些东西,你可能需要进行大量的返工。

    好消息是,如果您从头开始,您可以快速构建它。而且,如果您将浏览器对象存储在一个数组中,如果您喜欢这种事情,您可以并行测试多个浏览器。

    希望这会有所帮助(虽然已经晚了 3 年)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多