web-dev-qa-db-fra.com

Comment ouvrir un lien dans un nouvel onglet (chrome) avec Selenium WebDriver?

System.setProperty("webdriver.chrome.driver", "D:\\softwares\\chromedriver_win32\\chromedriver.exe");

WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("https://mail.google.com/");
String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN); 
driver.findElement(By.linkText("www.facebook.com")).sendKeys(selectLinkOpeninNewTab);

Un nouvel onglet s'ouvre mais le lien URL ne s'ouvre pas.

7
nlogn

J'ai vérifié avec le code ci-dessous et cela fonctionne très bien pour moi. J'ai trouvé réponse de ici .

    driver = new ChromeDriver();
    driver.manage().window().maximize();

    baseUrl = "http://www.google.co.uk/";
    driver.get(baseUrl);
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");

    ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
    driver.switchTo().window(tabs.get(1)); //switches to new tab
    driver.get("https://www.facebook.com");

    driver.switchTo().window(tabs.get(0)); // switch back to main screen        
    driver.get("https://www.news.google.com");
9
Abdul Hameed

ce code ci-dessous fonctionne pour moi dans Selenium 3 et la version chromée 58.

    WebDriver driver = new ChromeDriver();
    driver.get("http://yahoo.com");  
    ((JavascriptExecutor)driver).executeScript("window.open()");
    ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
    driver.switchTo().window(tabs.get(1));
    driver.get("http://google.com");
15
nur

J'ai essayé d'autres techniques, mais aucune d'entre elles n'a fonctionné, aucune erreur ne s'est produite, mais lorsque j'ai utilisé le code ci-dessous, cela a fonctionné pour moi.

((JavascriptExecutor)driver).executeScript("window.open()");
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
driver.get("http://google.com");
3
Ziaullah

J'avais utilisé le code ci-dessous pour ouvrir un nouvel onglet dans le navigateur à l'aide de C # Selenium ..

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;

js.ExecuteScript("window.open();");
1
mani kandan

Commencez par ouvrir un nouvel onglet vide en utilisant les touches Ctrl + t puis utilisez .get() pour récupérer l'URL souhaitée. Votre code devrait ressembler à quelque chose comme ça -

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,"t");
driver.findElement(By.tagName("body")).sendKeys(selectLinkOpeninNewTab);

driver.get("www.facebook.com");

Si vous souhaitez ouvrir un lien sur la vue actuelle dans un nouvel onglet, vous pouvez utiliser le code que vous avez écrit ci-dessus. Au lieu de By.linkText(), assurez-vous d’utiliser la classe de sélecteur By appropriée pour sélectionner l’élément Web.

1
JRodDynamite

Selenium ne peut s'automatiser que sur les WebElements du navigateur. L'ouverture d'un nouvel onglet est une opération effectuée sur le navigateur Web, qui est une application autonome. Pour ce faire, vous pouvez utiliser la classe Robot du package Java.util. *, Qui permet d'effectuer des opérations à l'aide du clavier, quel que soit le type d'application utilisé. Voici donc le code de votre opération . Notez que vous ne pouvez pas automatiser des applications autonomes à l'aide de la classe Robot, mais que vous pouvez effectuer des opérations au clavier ou à la souris

System.setProperty("webdriver.chrome.driver","softwares\\chromedriver_win32\\chromedriver.exe"); 
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("http://www.google.com");
Robot rob = new Robot();
rob.keyPress(keyEvent.VK_CONTROL);
rob.keyPress(keyEvent.VK_T);
rob.keyRelease(keyEvent.VK_CONTROL);
rob.keyRelease(keyEvent.VK_T);

Après cette étape, vous aurez besoin d’un itérateur de fenêtre pour basculer vers le nouvel onglet:

Set <String> ids = driver.getWindowHandles();
Iterator <String> it = ids.iterator();
String currentWindow = it.next();
String newWindow = it.next();
driver.switchTo().window(newWindow);
driver.findElement(By.linkText("www.facebook.com")).sendKeys(selectLinkOpeninNewTab);
0
Gaurav Thantry