Как открыть ссылку в новой вкладке (chrome) с помощью Selenium WebDriver?

System.setProperty("webdriver.chrome.driver", "D:softwareschromedriver_win32chromedriver.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);

открывается новая вкладка, но ссылка URL не открывается.

7 ответов


Я проверил код ниже, и он отлично работает для меня. Я нашел ответ от здесь.

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

этот код ниже работает для меня в Selenium 3 и chrome версии 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");

Сначала откройте пустую новую вкладку с помощью клавиш Ctrl + t и затем использовать .get() чтобы получить URL, который вы хотите. Ваш код должен выглядеть так -

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

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

если вы хотите открыть ссылку на текущем представлении в новой вкладке, то можно использовать код, который вы написали выше. Вместо By.linkText() убедитесь, что вы используете соответствующий By класс селектора для выбора веб-элемента.


Я использовал ниже код, чтобы открыть новую вкладку в браузере с помощью C# селен..

IJavaScriptExecutor Яш = водитель (IJavaScriptExecutor);

js.ExecuteScript("окно"".open ();");


Я пробовал другие методы, но ни один из них не работал, также не было ошибок, но когда я использовал код ниже, он работал для меня.

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

Selenium можно автоматизировать только на веб-элементах браузера. Открытие новой вкладки-это операция, выполняемая на webBrowser, который является автономным приложением. Для этого вы можете использовать класс Robot из java.утиль.* пакет, который может выполнять операции с помощью клавиатуры, независимо от типа приложения. Вот код вашей операции. обратите внимание, что вы не можете автоматизировать автономные приложения с помощью класса Robot, но вы можете выполнять клавиатуру или операции мыши

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

после этого шага вам понадобится итератор окна для перехода на новую вкладку:

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

вы можете открыть несколько браузеров или окно, используя код ниже:

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