C# 取消打印对话框的接受场景和方法
我正在使用specflow场景功能文件和要执行的步骤进行自动测试。我在chrome中执行取消打印对话框的场景时被绊倒了C# 取消打印对话框的接受场景和方法,c#,selenium-webdriver,specflow,scenarios,C#,Selenium Webdriver,Specflow,Scenarios,我正在使用specflow场景功能文件和要执行的步骤进行自动测试。我在chrome中执行取消打印对话框的场景时被绊倒了 Scenario:User can get report When I select 'All ' tab And I click on Report Icon to preview the page And I click the cancel button Then the preview page should be c
Scenario:User can get report
When I select 'All ' tab
And I click on Report Icon to preview the page
And I click the cancel button
Then the preview page should be closed
它无法识别“取消”按钮。我应该添加与web驱动程序相关的still吗
因为当我点击报告图标时,新的chrome实例被创建
driver.SwitchTo().Window(driver.WindowHandles[1]);
IWebElement printPreviewApp = driver.FindElement(By.TagName("print-preview-app"));
IWebElement printPreviewAppConten = expandShadowRoot(printPreviewApp, driver);
IWebElement printPreviewSidebar = printPreviewAppConten.FindElement(By.TagName("print-preview-sidebar"));
IWebElement printPreviewSidebarContent = expandShadowRoot(printPreviewSidebar, driver);
IWebElement printPreviewHeader = printPreviewSidebarContent.FindElement(By.TagName("print-preview-header"));
IWebElement printPreviewHeaderContent = expandShadowRoot(printPreviewHeader,driver);
printPreviewHeaderContent.FindElements(By.TagName("paper-button"))[1].Click();
关联的expandShadowRoot
函数:
private IWebElement expandShadowRoot(IWebElement parent, IWebDriver driver) {
return (IWebElement) ((IJavaScriptExecutor )driver).ExecuteScript("return arguments[0].shadowRoot", parent);
}
如果您想使用javascript处理此问题,非常感谢,在经过一整天的工作和各种库之后发现了这种方法。
private IWebElement expandShadowRoot(IWebElement parent, IWebDriver driver) {
return (IWebElement) ((IJavaScriptExecutor )driver).ExecuteScript("return arguments[0].shadowRoot", parent);
}