切换到新标签的元素 - 硒

时间:2017-10-23 16:11:36

标签: java google-chrome selenium-webdriver

使用selenium webdriver从下拉列表中单击选项时,链接将在新选项卡中打开。

因此,在尝试定位元素时,我得到一个空指针异常。如何切换到新选项卡以在其上找到元素?

我正在使用java语言开发chrome浏览器。

3 个答案:

答案 0 :(得分:1)

我找到了另一个适用于我的解决方案 - 使用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

并且您可以在需要时切换回父窗口 。driver.switchTo()窗口(parentWindowHandler);

答案 1 :(得分:0)

您可以使用机器人类使用键盘快捷键切换到新选项卡 CTRL + SHIFT + TAB - 在标签之间切换

version: "3"
services:
    ...
    setup:
       image: xxxx
       volumes: *appvolumes
       networks: *appnetworks

您还可以使用以下方法之一: Switch tabs using Selenium WebDriver with Java

答案 2 :(得分:0)

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();
    }
}