列印頁面

無論是為了分享資訊或維護檔案,列印網頁都是常見的任務。Selenium 通過其 PrintOptions、PrintsPage 和 browsingContext 類別簡化了此過程,這些類別為自動化列印網頁提供了彈性且直觀的介面。這些類別讓您能夠配置列印偏好設定,例如頁面佈局、邊距和縮放,確保輸出符合您的特定需求。

配置中

方向

使用 getOrientation()setOrientation() 方法,您可以取得/設定頁面方向 — PORTRAITLANDSCAPE

    public void TestOrientation() 
    {
        driver.get("https://selenium.dev.org.tw/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setOrientation(PrintOptions.Orientation.LANDSCAPE);
        PrintOptions.Orientation current_orientation = printOptions.getOrientation();
    }
        public void TestOrientation()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dev.org.tw");
            PrintOptions printOptions  = new PrintOptions();
            printOptions.Orientation = PrintOrientation.Landscape;
            PrintOrientation currentOrientation = printOptions.Orientation;
        }
    driver.get("https://selenium.dev.org.tw/")
    print_options = PrintOptions()
    print_options.orientation = "landscape" ## landscape or portrait

範圍

使用 getPageRanges()setPageRanges() 方法,您可以取得/設定要列印的頁面範圍 — 例如 “2-4”。

    public void TestRange() 
    {
        driver.get("https://selenium.dev.org.tw/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setPageRanges("1-2");
        String[] current_range = printOptions.getPageRanges();
    }
        public void TestRange()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dev.org.tw");
            PrintOptions printOptions  = new PrintOptions();
            printOptions.AddPageRangeToPrint("1-3"); // add range of pages
            printOptions.AddPageToPrint(5); // add individual page
        }   
    driver.get("https://selenium.dev.org.tw/")
    print_options = PrintOptions()
    print_options.page_ranges = ["1, 2, 3"] ## ["1", "2", "3"] or ["1-3"]

尺寸

使用 getPaperSize()setPaperSize() 方法,您可以取得/設定要列印的紙張尺寸 — 例如 “A0”、“A6”、“Legal”、“Tabloid” 等。

    public void TestSize() 
    {
        driver.get("https://selenium.dev.org.tw/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setScale(.50);
        double current_scale = printOptions.getScale();
    }
        public void TestSize()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dev.org.tw/");
            PrintOptions printOptions = new PrintOptions();
            PrintOptions.PageSize currentDimensions = printOptions.PageDimensions;
        }
    driver.get("https://selenium.dev.org.tw/")
    print_options = PrintOptions()
    print_options.scale = 0.5 ## 0.1 to 2.0``

邊距

使用 getPageMargin()setPageMargin() 方法,您可以設定您希望列印頁面的邊距尺寸 — 即頂部、底部、左側和右側邊距。

    {
        driver.get("https://selenium.dev.org.tw/");
        PrintOptions printOptions = new PrintOptions();
        PageMargin margins = new PageMargin(1.0,1.0,1.0,1.0);
        printOptions.setPageMargin(margins);
        double topMargin = margins.getTop();
        double bottomMargin = margins.getBottom();
        double leftMargin = margins.getLeft();
        double rightMargin = margins.getRight();
    }
        public void TestMargins()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dev.org.tw/");
            PrintOptions printOptions = new PrintOptions();
            PrintOptions.Margins currentMargins = printOptions.PageMargins;
        }
    driver.get("https://selenium.dev.org.tw/")
    print_options = PrintOptions()
    print_options.margin_top = 10
    print_options.margin_bottom = 10
    print_options.margin_left = 10
    print_options.margin_right = 10

縮放

使用 getScale()setScale() 方法,您可以取得/設定您希望列印頁面的縮放比例 — 例如 1.0 是 100% 或預設值,0.25 是 25% 等。

    public void TestScale() 
    {
        driver.get("https://selenium.dev.org.tw/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setScale(.50);
        double current_scale = printOptions.getScale();
    }
        public void TestScale()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dev.org.tw/");
            PrintOptions printOptions = new PrintOptions();
            printOptions.ScaleFactor = 0.5;
            double currentScale = printOptions.ScaleFactor;
        }
    driver.get("https://selenium.dev.org.tw/")
    print_options = PrintOptions()
    print_options.scale = 0.5 ## 0.1 to 2.0
    current_scale = print_options.scale

背景

使用 getBackground()setBackground() 方法,您可以取得/設定是否顯示背景顏色和圖像 — 布林值 truefalse

    public void TestBackground() 
    {
        driver.get("https://selenium.dev.org.tw/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setBackground(true);
        boolean current_background = printOptions.getBackground();
    }
        public void TestBackgrounds()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dev.org.tw/");
            PrintOptions printOptions = new PrintOptions();
            printOptions.OutputBackgroundImages = true;
            bool currentBackgrounds = printOptions.OutputBackgroundImages;
        }
    driver.get("https://selenium.dev.org.tw/")
    print_options = PrintOptions()
    print_options.background = True ## True or False

自動調整頁面寬度

使用 getShrinkToFit()setShrinkToFit() 方法,您可以取得/設定頁面是否會自動調整頁面寬度以符合內容 — 布林值 truefalse

    public void TestShrinkToFit() 
    {
        driver.get("https://selenium.dev.org.tw/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setShrinkToFit(true);
        boolean current_shrink_to_fit = printOptions.getShrinkToFit();
    }
        public void TestShrinkToFit()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dev.org.tw/");
            PrintOptions printOptions = new PrintOptions();
            printOptions.ShrinkToFit = true;
            bool currentShrinkToFit = printOptions.ShrinkToFit;
        }
    driver.get("https://selenium.dev.org.tw/")
    print_options = PrintOptions()
    print_options.shrink_to_fit = True ## True or False

列印中

一旦您配置了 PrintOptions,就可以列印頁面了。若要執行此操作,您可以調用 print 函數,該函數會產生網頁的 PDF 表示。產生的 PDF 可以儲存到您的本機儲存空間以供進一步使用或分發。使用 PrintsPage(),print 命令將以 base64 編碼格式傳回 PDF 資料,您可以將其解碼並寫入您所需位置的檔案中,而使用 BrowsingContext() 將傳回字串。

目前可能有多種實作方式,具體取決於您選擇的語言。例如,使用 Java,您可以選擇使用 BrowingContext()PrintsPage() 進行列印。兩者都將 PrintOptions() 物件作為參數。

注意:BrowsingContext() 是 Selenium BiDi 實作的一部分。若要啟用 BiDi,請參閱 啟用 Bidi

PrintsPage()

    public void PrintWithPrintsPageTest() 
    {
        driver.get("https://selenium.dev.org.tw/");
        PrintsPage printer = (PrintsPage) driver;
        PrintOptions printOptions = new PrintOptions();
        Pdf printedPage = printer.print(printOptions);
        Assertions.assertNotNull(printedPage);
    }

BrowsingContext()

    public void PrintWithBrowsingContextTest() 
    {
        BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle());
        driver.get("https://selenium.dev.org.tw/selenium/web/formPage.html");
        PrintOptions printOptions = new PrintOptions();
        String printPage = browsingContext.print(printOptions);
        Assertions.assertTrue(printPage.length() > 0);
    }
        public void PrintWithPrintsPageTest() 
        {
            WebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dev.org.tw/");
            PrintOptions printOptions = new PrintOptions();
            PrintDocument printedPage = driver.Print(printOptions);
            Assert.IsTrue(printedPage.AsBase64EncodedString.StartsWith("JVBER"));
        }

print_page()

    driver.get("https://selenium.dev.org.tw/")
    print_options = PrintOptions()
    pdf = driver.print_page(print_options)