static void Main()
{
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("http://google.com");
IWebElement body = driver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Control + "t");
}
C’est le code que j’essaie d’utiliser pour ouvrir un nouvel onglet et il ne fonctionne pas. Je ne reçois aucune erreur. Le pilote ouvre Google et c’est tout .... J'ai beaucoup cherché et trouvé de nombreux tutoriels, même des vidéos où les gens utilisent exactement le même code et que cela fonctionne pour eux, mais pour moi cela ne fonctionne pas et je ne peux pas le comprendre ...
J'ai essayé d'envoyer Keys.Shift + "t" au champ de recherche et cela fonctionne, il écrit un T majuscule dans le champ
J'ai aussi essayé
Actions act = new Actions(driver);
act.KeyDown(Keys.Control).SendKeys("t").Perform();
Et cela ne fonctionne toujours pas, mais encore une fois si je change de Keys.Control en Keys.Shift écrit, ça ne ressemble à rien qui implique Keys.Control fonctionne !!
Edit: j'ai essayé d'exécuter le code avec un pilote IE et cela a fonctionné là-bas. Il ouvre un nouvel onglet, mais n'ouvre pas de nouveaux onglets sur Chrome?
Merci pour les réponses! Je l'ai fait avec JavaScript.
((IJavaScriptExecutor)driver).ExecuteScript("window.open();");
On dirait que c'est une "fonctionnalité" du pilote chromé.
https://bugs.chromium.org/p/chromedriver/issues/detail?id=581
Il s'agit d'une limitation dans la façon dont nous simulons la saisie au clavier dans ChromeDriver. Les clés sont envoyées directement au processus de rendu, en contournant le processus du navigateur. Donc, aucun gestionnaire de raccourci clavier dans le processus du navigateur ne sera appelé par sendKeys ().
Essaye ça
driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
driver.SwitchTo().Window(driver.WindowHandles.Last());
driver.Navigate().GoToUrl("http://www.google.com")
Si vous êtes sur un Mac, utilisez Keys.Command au lieu de Keys.Control:
body.SendKeys(Keys.Command + "t");