代码之家  ›  专栏  ›  技术社区  ›  I.M.

Ruby Watir reference Chrome打印预览

  •  0
  • I.M.  · 技术社区  · 6 年前

    我正在写一个脚本来循环浏览一些链接并打印到PDF。 当您单击其中一个链接时,将弹出一个要打印的文档的新窗口,并在该新窗口的顶部弹出Chrome的打印预览框。

    我正在尝试更改打印机,然后单击“打印”按钮。

    然而,我的代码的情况是,watir只查看窗口html,而不是打印预览html,因此无法定位元素。

    我的代码如下所示:

            begin
                browser.window(title: 'Window Title Name').use do
                    browser.div(:id => "navbar-scroll-container").button(:class => "destination-settings-change-button").click
                    sleep(1)
                    browser.element(:title => "CutePDF Writer").click
                    browser.button(:visible_text => 'Print').click
                end
            rescue Watir::Exception::NoMatchingWindowFoundException
                retry
            end 
    

    我试过只使用“browser.windows.last.use do”而不是标题名,但这也不起作用。

    我知道它只能看到底层窗口的html,因为当我放置浏览器时。html输出是基础windows html。

    如果你想查看html的情况,只需按住Ctrl+P键(在chrome中)查看我的意思。

    1 回复  |  直到 6 年前
        1
  •  0
  •   I.M.    6 年前

    当然,在发布了一个问题后,我很快找到了一种答案;基本上,chrome会打开两个浏览器窗口,而打印预览窗口不能通过标题访问(因为它与基础窗口的标题相同),但可以通过 browser.window(:index => 1).use do .不知道为什么 browser.windows.last.use do 不起作用。接下来我会想 browser.window(:index => 2).use do 将是正确的,因为索引0是最初打开的索引,索引1是弹出窗口,索引2是打印预览。