Как открыть ссылку в новой вкладке (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");