À l'aide de JavascriptExecutor à sendKeys plus cliquez sur web élément

Je suis en train d'ouvrir un lien dans un nouvel onglet, puis de passer à cet onglet, dans le navigateur Firefox, en utilisant le sélénium en Java. C'est ma compréhension que, pour ce faire, j'ai besoin d'utiliser un envoyer la combinaison de touches.

Afin d'ouvrir le lien dans la même fenêtre, j'ai été en utilisant quelque chose comme ceci:

WebElement we = driver.findElement(By.xpath("//*[@id='btn']"));

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", we);

Ci-dessus a fonctionne pour moi.

Maintenant, je vais essayer aussi de sendKeys, comme ci-dessous, qui ne fonctionne pas:

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("keyDown(Keys.CONTROL)
                        .keyDown(Keys.SHIFT)
                        .click(arguments[0])
                        .keyUp(Keys.CONTROL)
                        .keyUp(Keys.SHIFT);", we);

Des conseils? Je ne peux pas comprendre la syntaxe correcte pour sendKeys pour JavascriptExecutor. J'ai vu quelques solutions similaires à l'aide d'Actions, mais cela n'a pas fonctionné pour moi.

Lorsque vous avez utilisé les Actions à effectuer, CTRL+MAJ+clic, ce qui s'est passé? Merci.
En fait, si j'utilise new Actions(driver).keyDown(Keys.CONTROL).keyDown(Keys.SHIFT).click(we).keyUp(Keys.C‌​ONTROL).keyUp(Keys.SHIFT).perform();, alors le lien est ouvert dans le onglet. Je ne peux pas comprendre comment faire ce travail correctement.
Pourquoi voulez-vous exécuter sendKeys à l'aide d'Actions ou JavascriptExecutor? Plaine de Sélénium WebElement ne fonctionne pas?

OriginalL'auteur Clark Henry | 2015-07-26