Reputation: 53
I am trying to print the web page and save as pdf using selenium C#. But Ctrl+P key is not working. I tried all the below possible methods
1 -
SendKeys.SendWait(Keys.Control + "P");
2 -
Actions vaction = new Actions(driver);
vaction.KeyDown(Keys.Control);
vaction.SendKeys("p");
vaction.KeyUp(Keys.Control);
vaction.Build().Perform();
3 - using javascript print dialog is appearing but after that enter key is not working to save the page as pdf
((IJavaScriptExecutor)driver).ExecuteScript("window.print()");
driver.SwitchTo().Window(driver.WindowHandles.Last());
SendKeys.SendWait("{ENTER}");
Upvotes: 0
Views: 496
Reputation: 11722
The normal sendkeys syntax would be
1)
SendKeys.SendWait("^p"); // or ("^{p}")
where ^ is the symbol for Control hence {^} is literal ^
normally applied with a wait because the enter would be premature
SendKeys.SendWait("^p");
// give it time to render the print
System.Threading.Thread.Sleep(5000);
SendKeys.SendWait("~");
// give it time to spool onto the printer
System.Threading.Thread.Sleep(5000);
keysEventInput.Click();
Actions vAction = new Actions(driver);
IAction pressControl = vAction.KeyDown(keysEventInput, Keys.Control).Build();
pressControl.Perform();
IAction sendLowercase = vAction.SendKeys(keysEventInput, "p").Build();
sendLowercase.Perform();
IAction releaseControl = vAction.KeyUp(keysEventInput, Keys.Control).Build();
releaseControl.Perform();
So try those, but unsure why
perhaps https://github.com/MicrosoftEdge/WebView2Feedback/issues/1471#issuecomment-871315418 helps
also consider
// press Enter programmatically - the print dialog must have focus, obviously
Robot r = new Robot();
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
Upvotes: 1