wake-up-neo.net

So öffnen Sie einen Link in einem neuen Tab (Chrome) mit 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);

Neuer Tab wird geöffnet, aber der URL-Link wird nicht geöffnet.

7
nlogn

Ich habe mit dem folgenden Code nachgesehen und es funktioniert gut für mich. Ich habe eine Antwort von hier 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");
9
Abdul Hameed

der folgende Code funktioniert für mich in Selenium 3 und Chromversion 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

Ich habe andere Techniken ausprobiert, aber keine davon hat funktioniert, auch kein Fehler wurde erzeugt, aber wenn ich den Code unten verwendet habe, hat er für mich funktioniert.

((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

Wenn Sie das Linkelement erhalten können, können Sie dieses verwenden. Sie gelangen auch zu der Registerkarte, die Sie geöffnet haben.

WebElement link= driver.findElement(By.tagname("a"));  
String keyString =   Keys.CONTROL+Keys.SHIFT.toString()+Keys.ENTER.toString());
link.sendKeys(keyString);
2
user2117229

Ich hatte den folgenden Code verwendet, um eine neue Registerkarte im Browser mit C # Selenium zu öffnen.

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;

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

Öffnen Sie zunächst mit den Tasten den leeren neuen Tab Ctrl + t Verwenden Sie dann .get() , um die gewünschte URL abzurufen. Ihr Code sollte ungefähr so ​​aussehen -

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

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

Wenn Sie einen Link in der aktuellen Ansicht in einem neuen Tab öffnen möchten, können Sie den oben geschriebenen Code verwenden. Stellen Sie sicher, dass Sie anstelle von By.linkText() die entsprechende Auswahlklasse By verwenden, um das Webelement auszuwählen.

1
JRodDynamite

Selenium kann nur auf den WebElements des Browsers automatisiert werden. Das Öffnen eines neuen Tabs ist eine Operation, die auf dem webBrowser ausgeführt wird, einer eigenständigen Anwendung. Dazu können Sie die Robot-Klasse aus dem Java.util. * -Paket verwenden, das Operationen über die Tastatur unabhängig von der Art der Anwendung ausführen kann. Hier also der Code für Ihre Operation .Beachten Sie, dass Sie Standalone-Anwendungen nicht mit der Robot-Klasse automatisieren können, Sie können jedoch Tastatur- oder Mausoperationen ausführen.

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 benötigen Sie einen Fensteriterator, um zur neuen Registerkarte zu wechseln:

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