Как получить экземпляр драйвера недавно открытой вкладки в Selen WebDriver - PullRequest
1 голос
/ 04 октября 2019

Я новичок в кодировании. Насколько я знаю, вы успешно вошли в систему. На домашней странице, когда я нажимаю на указанную ссылку, она открывается в новой вкладке, в которой ожидается поведение. Теперь, когда я пытаюсь щелкнуть по элементам, присутствующим во вновь открытой вкладке, я не получаю такого исключения для элемента, потому что экземпляр драйвера указывает на 1-ю вкладку, а не на вторую. Как получить экземпляр драйвера недавно открытой вкладки. Ниже приведен код, который я использую.

// Это базовый класс.

public class BaseTest {
    public static WebDriver driver ;

    @BeforeTest
    public void setUp() {
        System.setProperty("webdriver.chrome.driver", "/chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("My url");

    }
}

// Это тест входа в систему.

public class LoginTest extends BaseTest {

    @Test
    public void login() throws InterruptedException {
        LoginPage loginpage = PageFactory.initElements(driver, LoginPage.class);
                loginpage.enterUser_Name(userName);
                loginpage.enterPass_Word(passWord);
                loginpage.clickLoginButton();
            }
        }
        Thread.sleep(5000);
        loginpage.ClickOnTab();
        Thread.sleep(5000);
        loginpage.clickOnLink(); //At this line, new tab is opened automatically.
        Thread.sleep(5000);
       }
}

// Во вновь открывшейся вкладке мне нужно нажать на некоторые элементы. Это код, который я использую.

public class newTab extends BaseTest {

    @Test
    public void createNew()  {
        OtherPage create = PageFactory.initElements(driver,OtherPage.class);
        Thread.sleep(10000);
        create.clickOnTab();// At this line I am getting no such element exception

    }
}

Пожалуйста, помогите мне, как мне выполнить действия на вновь открытой вкладке, и скажите, где я делаю ошибку.

1 Ответ

0 голосов
/ 05 октября 2019

Попробуйте ниже код

    public class LoginTest extends BaseTest {

    @Test
    public void login() throws InterruptedException {
        LoginPage loginpage = PageFactory.initElements(driver, LoginPage.class);
                loginpage.enterUser_Name(userName);
                loginpage.enterPass_Word(passWord);
                loginpage.clickLoginButton();
            }
        }
        Thread.sleep(5000);
        loginpage.ClickOnTab();
        Thread.sleep(5000);
        loginpage.clickOnLink(); //At this line, new tab is opened automatically.
        Thread.sleep(5000);
       }

     public String getLocalWindowHandle (){
        return driver.getWindowHandle();
     } 
}


public class newTab extends BaseTest {

    LoginTest loginTest = new LoginTest();

    @Test
    public void createNew()  {
        OtherPage create = PageFactory.initElements(driver,OtherPage.class);
        Thread.sleep(10000);

        ArrayList listOfAllWindowHandles = new ArrayList(driver.getWindowHandles());

        driver.switchTo().window((String) listOfAllWindowHandles.get(0));

        create.clickOnTab();
        driver.close();

        String firstWindowHandle = loginTest.getLocalWindowHandle();
        driver.switchTo().window(firstWindowHandle);


    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...