【问题标题】:Ruby Watir reference Chrome Print PreviewRuby Watir 参考 Chrome 打印预览
【发布时间】:2018-10-23 00:53:31
【问题描述】:

我正在编写一个脚本来循环浏览一些链接并打印到 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,因为当我放置 browser.html 时,输出就是底层窗口的 html。

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

【问题讨论】:

    标签: ruby google-chrome printing watir print-preview


    【解决方案1】:

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

    【讨论】:

    • 我不知道为什么windows.last 不适合你。输入b.windows.count 时返回了多少个窗口?
    • #windows 数组在设计上是无序的。另请注意,:index 是从零开始的,而不是从一开始的,
    • @titusfortner windows 数组无序是什么意思?
    • 当您调用#windows 时,它将返回当前打开的窗口的句柄列表,并且该列表不会按任何顺序排列。所以原始窗口的句柄可能是数组中的最后一项。
    • 感谢@titusfortner,我知道它是从零开始的,但没有意识到它是无序的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2014-11-25
    • 1970-01-01
    相关资源
    最近更新 更多