如何使用浏览器';在WebDriver中使用Java将控件添加到新打开的选项卡

如何使用浏览器';在WebDriver中使用Java将控件添加到新打开的选项卡,java,selenium-webdriver,automation,Java,Selenium Webdriver,Automation,为此,我必须将控件传递给新选项卡。如何操作?您可以使用以下功能切换选项卡(并完成窗口): //Go to a page where link is present driver.findElement(By.xpath("//div[@id='LftNav']/ul/li[3]/div/ul/li[3]/a/label"))).click(); //Click this link will open up a new tab. driver.findElement(By.xpath(

为此,我必须将控件传递给新选项卡。如何操作?

您可以使用以下功能切换选项卡(并完成窗口):

//Go to a page where link is present 
driver.findElement(By.xpath("//div[@id='LftNav']/ul/li[3]/div/ul/li[3]/a/label"))).click();
//Click this link will open up a new tab.     
driver.findElement(By.xpath("//tr[2]/td[9]/a")).click();

//Now I have to verify a value present in the New Tab.
如果您有两个以上的选项卡,则可以使用:

ArrayList<String> windowHandles = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(windowHandles.get(1));
driver.close();
driver.switchTo().window(windowHandles.get(0));

要获取打开的选项卡的数量并跳转到
size()-1

SendKeys对我来说不起作用。我尝试了以下适用于我的代码:

String mainWindow = driver.getWindowHandle(); // get the main window handle
driver.findElement(By.cssSelector("//*[#id='someId']")).click(); // click some link that opens a new window

for (String winHandle : driver.getWindowHandles()) {
    driver.switchTo().window(winHandle);
 // switch focus of WebDriver to the next found window handle (that's your newly opened window)
if(driver.findElement(By.Id("SomeID")).getText().equals("expected window title"))
break;
}
WebDriver=new ChromeDriver();
驱动程序。获取(“https://www.google.com/");
机器人=新机器人();
机器人=新机器人();
机器人按键(KeyEvent.VK_控制);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_控制);
robot.keyrease(KeyEvent.VK_T);
睡眠(3000);
机器人按键(KeyEvent.VK_控制);
robot.keyPress(KeyEvent.VK_选项卡);
robot.keyRelease(KeyEvent.VK_控制);
robot.keyRelease(KeyEvent.VK_选项卡);
int tabNo=driver.getWindowHandles().size();
系统输出打印项次(表号);
ArrayList windowHandles=新的ArrayList(driver.getWindowHandles());
driver.switchTo().window(windowHandles.get(tabNo-1));
驱动程序。获取(“http://www.bing.com/");

可能重复感谢您的回答。但我现在有个问题。实际上,已打开的选项卡是一个包含数据的pdf。如果pdf不包含任何数据,那么我可以验证页面中的文本,但如果pdf页面包含一些数据。然后它无法验证该文本。您能给我一个建议吗?如果pdf页面中有数据,则windowhandles选项不起作用。它不会将控件转到下一页。我检查了它,但控制了下一个选项卡。很难说,因为我还没有使用PDF文件和selenium。实际上,我不知道是否有可能用selenium方法检查PDF文件。我刚刚发现:
String mainWindow = driver.getWindowHandle(); // get the main window handle
driver.findElement(By.cssSelector("//*[#id='someId']")).click(); // click some link that opens a new window

for (String winHandle : driver.getWindowHandles()) {
    driver.switchTo().window(winHandle);
 // switch focus of WebDriver to the next found window handle (that's your newly opened window)
if(driver.findElement(By.Id("SomeID")).getText().equals("expected window title"))
break;
}
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
Robot robot = new Robot();
robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_T);  
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_T);
Thread.sleep(3000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);  
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_TAB);
int tabNo = driver.getWindowHandles().size();
System.out.println(tabNo);
ArrayList<String> windowHandles = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(windowHandles.get(tabNo-1)); 
driver.get("http://www.bing.com/");