Обработка всплывающего окна печати с помощью selenium C#

#c# #selenium #printing #popupwindow

#c# #селен #печать #всплывающее окно

Вопрос:

Я работаю над проектом автоматизации тестирования. Мне нужно нажать на кнопку печати (за этой печатью стоит функциональная цель), чтобы при нажатии на кнопку отображалось всплывающее окно печати. Я хочу нажать кнопку отмены в этом всплывающем окне или просто закрыть его. Я работаю с selenium C #, а браузер — Firefox (браузер по умолчанию) Я попробовал этот метод :

 public void ClosePrintPopup()
        {
            IJavaScriptExecutor jse = (IJavaScriptExecutor)m_WebDriver;
            jse.ExecuteScript("setTimeout(function() { window.print(); }, 0);");
            m_WebDriver.SwitchTo().Window(m_WebDriver.WindowHandles.Last());
            Thread.Sleep(2000);
            string JSPath = "document.querySelector('body>print-preview-app').shadowRoot.querySelector('#sidebar').shadowRoot.querySelector('print-preview-button-strip').shadowRoot.querySelector('cr-button.cancel-button')";
            IWebElement cancelBtn = (IWebElement)jse.ExecuteScript($"return {JSPath}");
            cancelBtn.Click();
        }
 

и у меня есть это исключение

   Message: 
    --- Exception: OpenQA.Selenium.WebDriverException
    --- Method: SP_AutomateRenew::TC_Subscription2 ------------
    
    --- Message: TypeError: document.querySelector(...) is null
    --- Source: WebDriver
 

Комментарии:

1. Сообщение об ошибке понятно. Данный элемент body>print-preview-app равен null. Убедитесь, что такой элемент есть.