我开始学习如何使用带Java的Selenium在浏览器中处理多个选项卡。看起来我下面的代码无法正常工作。
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<String> s1= new ArrayList<String>(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 :
getWindowHandles()
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<String> 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