Ruby Watir 参考 Chrome 打印预览

Ruby Watir reference Chrome Print Preview

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

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

但是,我的代码发生了什么,watir 只查看 window 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" 而不是标题名称,但这也不起作用。

我知道它只能看到底层 window 的 html,因为当我输入 browser.html 时,输出是底层 windows html。

如果您想查看 html 情况,只需按 Ctrl+P 此页面(在 chrome 中)即可了解我的意思。

当然,发布问题后我很快就找到了答案;基本上 chrome 打开 2 个浏览器 windows 并且无法通过标题访问打印预览(因为它与底层浏览器具有相同的标题)但可以通过 browser.window(:index => 1).use do 访问。不确定为什么 browser.windows.last.use do 不起作用。此外,我认为 browser.window(:index => 2).use do 是正确的,因为索引 0 是最初打开的索引,索引 1 是弹出窗口,索引 2 是打印预览。