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);
新しいタブは開いていますが、URLリンクは開いていません。
私は以下のコードでチェックしましたが、それは私のためにうまく機能します。 here から答えを見つけました。
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");
私は他の手法を試しましたが、どれも機能せず、エラーも発生しませんでしたが、以下のコードを使用するとうまくいきました。
((JavascriptExecutor)driver).executeScript("window.open()");
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
driver.get("http://google.com");
リンク要素を取得できる場合、これを使用できます。また、開いたタブに移動します。
WebElement link= driver.findElement(By.tagname("a"));
String keyString = Keys.CONTROL+Keys.SHIFT.toString()+Keys.ENTER.toString());
link.sendKeys(keyString);
以下のコードを使用して、C#Seleniumを使用してブラウザーで新しいタブを開きました。
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("window.open();");
最初にキーを使用して空の新しいタブを開きます 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
セレクタクラスを使用してWeb要素を選択するようにしてください。
Seleniumは、ブラウザのWebElementsでのみ自動化できます。新しいタブを開くことは、スタンドアロンアプリケーションであるwebBrowserで実行される操作です。これを行うために、Java.util。*パッケージの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);