getWindowHandles()在firefox 58中不起作用。焦点仍然在父选项卡上,并且不会转移到下一个选项卡

我开始学习如何使用Selenium和Java在浏览器中处理多个选项卡。 看起来我的代码不起作用。

import java.util.ArrayList; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class HandlingWindows { public static void main(String[] args) throws InterruptedException { WebDriver driver= new FirefoxDriver(); driver.get("https://www.facebook.com/"); String parent= driver.getWindowHandle(); System.out.println("Parent Window is"+parent); //Get Data Policy WebElement we= driver.findElement(By.linkText("Data Policy")); //Click Data Policy link we.click(); //Create an arrayList ArrayList s1= new ArrayList(driver.getWindowHandles()); for(String s2:s1) { if(!(s2.equalsIgnoreCase(parent))) { driver.switchTo().window(s2); Thread.sleep(5000); System.out.println(driver.getWindowHandle()); System.out.println("get title of window"+driver.getTitle()); } } } } 

请告诉我如何在不使用getWindowHandles()的情况下显示标题“数据策略”。

getWindowHandles()工作得很好,但在调用getWindowHandles()之前,你必须按如下方式引入WebDriverwait

 System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe"); WebDriver driver= new FirefoxDriver(); driver.get("https://www.facebook.com/"); String parent= driver.getWindowHandle(); System.out.println("Parent Window is"+parent); driver.findElement(By.linkText("Data Policy")).click(); WebDriverWait wait = new WebDriverWait(driver,5); wait.until(ExpectedConditions.numberOfWindowsToBe(2)); Set s1= driver.getWindowHandles(); for(String s2:s1) { if(!parent.equalsIgnoreCase(s2)) { driver.switchTo().window(s2); Thread.sleep(5000); System.out.println(driver.getWindowHandle()); System.out.println("get title of window"+driver.getTitle()); } } 

控制台输出:

 Parent Window is4294967297 4294967303 get title of windowData Policy 

只需输入Thread.sleep(3000); 单击“数据策略”链接后。

 import java.util.ArrayList; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class HandlingWindows { public static WebDriver driver; public static void main(String[] args) throws InterruptedException { //D:\new folde backup\Selenium_project\seleniumproject\testNG_practice\driver System.setProperty("webdriver.gecko.driver", "./driver/geckodriver.exe"); driver = new FirefoxDriver(); driver.get("https://www.facebook.com/"); String parent = driver.getWindowHandle(); System.out.println("Parent Window is" + parent); // Get Data Policy WebElement we = driver.findElement(By.linkText("Data Policy")); // Click Data Policy link we.click(); // Create an arrayList Thread.sleep(3000); ArrayList s1 = new ArrayList(driver.getWindowHandles()); System.out.println(s1); for (String s2 : s1) { if (!(s2.equalsIgnoreCase(parent))) { driver.switchTo().window(s2); Thread.sleep(5000); System.out.println(driver.getWindowHandle()); System.out.println("get title of window" + driver.getTitle()); } } } } 

输出: –

 Parent Window is4294967297 [4294967297, 4294967301] 4294967301 get title of windowData Policy