简体   繁体   English

切换到新标签页的元素-硒

[英]Switching to elements of new tab - selenium

On clicking an option from a dropdown using selenium webdriver, the link opens in a new tab. 在使用Selenium Webdriver从下拉菜单中单击选项时,该链接将在新选项卡中打开。

So, when trying to locate elements, I am getting a null pointer exception. 因此,当尝试定位元素时,出现了空指针异常。 How to switch to the new tab to locate elements on it? 如何切换到新标签页以在其上定位元素?

I am working on chrome browser using java language. 我正在使用Java语言在Chrome浏览器上工作。

I have found another solution, which is working for me, - using windows handlers 我找到了另一个对我有用的解决方案-使用Windows处理程序

String parentWindowHandler=driver.getWindowHandle();// Store your parent window
String subWindowHandler = null;
Set<String> handles = driver.getWindowHandles(); // get all window handles
            Iterator<String> iterator = handles.iterator();
            while (iterator.hasNext()){
                subWindowHandler = iterator.next();
            }
driver.switchTo().window(subWindowHandler); // switch to popup window

and you can switch back to parent window when required by driver.switchTo().window(parentWindowHandler); 并且可以在driver.switchTo()。window(parentWindowHandler);需要时切换回父窗口。

You can use robot class to switch to the new tab using keyboard shortcuts CTRL+SHIFT+TAB - switch between tabs 您可以使用机器人类通过键盘快捷键CTRL + SHIFT + TAB切换到新标签页-在标签页之间切换

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_CONTROL);

You can also use one of the following methods: Switch tabs using Selenium WebDriver with Java 您还可以使用以下方法之一: 使用带有Java的Selenium WebDriver切换选项卡

Here you can open new tab and switch then open a new url in new tab


    package com.crm.qa.BaseTest;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class NewTabChrome {

    public static void main(String[] args) throws AWTException {

        System.setProperty("webdriver.chrome.driver", 
                "C:/Users/sunil/Downloads/chromedriver_win32 (2)/chromedriver.exe");

        WebDriver driver = new ChromeDriver();//open browser
        driver.manage().window().maximize();//browser maximize
        driver.get("http://www.google.com");//open google 

        //open new tab 
        for(int i = 0; i<=1;i++){
        Robot rob = new Robot();
        rob.keyPress(KeyEvent.VK_CONTROL);
        rob.keyPress(KeyEvent.VK_T);
        rob.keyRelease(KeyEvent.VK_CONTROL);
        rob.keyRelease(KeyEvent.VK_T);
        ArrayList<String> tabs1 = new ArrayList<String> (driver.getWindowHandles());
        //Switch to new tab
        driver.switchTo().window((String) tabs1.get(i));
    }
        //open facebook
        driver.get("http://facebook.com");
        driver.quit();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM