5
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); 

neuen Tab öffnet aber URL-Link öffnet nichtWie öffnet man einen Link in einem neuen Tab (Chrom) mit Selen-Webdriver?

Antwort

6

Ich habe mit unten Code überprüft und es funktioniert gut für mich. Ich habe die Antwort von here gefunden.

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"); 
+0

Es funktioniert gut, aber ein weiteres Browserfenster öffnet sich – nlogn

+0

Es funktioniert für mich in einem neuen Tab. Können Sie bestätigen, ob dies ('driver.findElement (By.cssSelector (" body ")). SendKeys (Keys.CONTROL +" t "); ') Befehl öffnet ein neues Fenster oder eine neue Registerkarte für Sie? –

+1

funktioniert jetzt gut! – nlogn

1

erste offene leere neue Tab mit den Tasten Ctrl + t und dann .get() verwenden Sie die URL, die Sie wollen zu holen. Der Code sollte wie folgt aussehen -

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

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

Wenn Sie einen Link auf die aktuelle Ansicht in einem neuen Tab öffnen möchten dann der Code, den Sie oben geschrieben haben, können verwendet werden. Verwenden Sie anstelle von By.linkText() die entsprechende Selektorklasse By, um das Webelement auszuwählen.

9

dies unter Code funktioniert für mich in Selenium 3 und Chrom-Version 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"); 
+0

Dies ist die beste Lösung wie Ctrl + t ist immer gebrochen auf Chrom-Browser, https: // Github.com/SeleniumHQ/selen/issues/5462 – vikramvi

+0

Super es funktioniert wie erwartet ctrl + t ist in chome gebrochen aber ein Problem in Chrom "org.openqa.selenium.WebDriverException: getrennt: keine Verbindung zum Renderer" kann mit catch-Block behandelt werden Danke für die Antwort –

-1

Sie mehrere Browser oder ein Fenster, indem Sie unten Code öffnen können:

kann
WebDriver driver = new ChromeDriver(); 
driver.get("http://yahoo.com"); 

WebDriver driver1 = new ChromeDriver(); 
driver1.get("google.com"); 

WebDriver driver2 = new InternetExplorerDriver(); 
driver2.get("google.com/gmap"); 
0

Selen automatisieren Sie nur auf den WebElements des Browsers. Das Öffnen einer neuen Registerkarte ist eine Operation, die auf dem webBrowser ausgeführt wird, der eine eigenständige Anwendung ist. Dafür können wir die Robot-Klasse aus dem Paket java.util. * Verwenden, das Operationen mit Tastatur und Maus ausführen kann, unabhängig davon, um welchen Anwendungstyp es sich handelt. Also hier ist der Code für Ihre Operation. Beachten Sie, dass Sie nicht Stand-alone-Anwendungen mit Hilfe des Roboter Klasse automatisieren können, aber Sie können Tastatur oder Maus Operationen

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); 

Nach diesem Schritt müssen Sie ein Fenster Iterator wechseln auf die neuen Registerkarte ausführen:

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); 
1

ich den Code unten benutzt hatte, um einen neuen Tab im Browser zu öffnen C# Selen mit ..

IJavaScriptExecutor js = (IJavaScriptExecutor) Treiber;

js.ExecuteScript ("window.open();");

Verwandte Themen