Идентификатор сеанса пуст.Использование WebDriver после вызова quit ()? - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь добавить новый контакт, прочитав данные теста и файл Excel.Данные первой строки созданы успешно.После этого для второй строки я получаю сообщение об ошибке: «org.openqa.selenium.NoSuchSessionException: идентификатор сеанса имеет значение null. Использование WebDriver после вызова quit ()?»

Я перепроверил свой код, и были найдены другие тестовые случаи дляработать нормальноЯ следую следующему потоку. Перейдите в базу URL-> Логин-> Добавить контакты-> driver.quit ()

@AfterMethod
    public void teardown() {

        driver.quit();
    }

Я ожидаю, что данные должны быть прочитаны и несколько контактов должны быть добавлены

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

Вы читаете данные из Excel, и ваш первый ход прошел успешно.

Ваш второй ход закончится неудачей, потому что у вас истек вызов драйвера в аннотации @AfterMethod.Аннотация @AfterMethod будет выполняться после каждой аннотации @Test.В вашем случае, поскольку срок действия драйвера в AfterMethod истек, и если он пойдет на дальнейшее @Test, значит, он потерпел неудачу.

В вашем случае ход будет выглядеть так:

Если 3 excel Rows:

@BeforeMethod(if applicable)
1st Row
@AfterMEthod

@BeforeMethod(if applicable)
2nd Row
@AfterMEthod

@BeforeMethod(if applicable)
3rd Row
@AfterMEthod

Вам необходимо понять жизненный цикл аннотации TestNG, которую аннотация будет вызывать, когда.

Это простейший пример этого:

enter image description here

Рекомендуется определять driver.quite () в аннотации @AfterSuite.

0 голосов
/ 12 февраля 2019

Эта ошибка возникает при использовании экземпляра драйвера, для которого вы уже вызвали метод quit () или close (), для любых дальнейших операций.Просто не забудьте повторно инициализировать экземпляр драйвера, прежде чем использовать его снова.Как вы вызывали driver.quit () в @AfterMethod, инициализировал экземпляр драйвера в @BeforeMethod как:

@BeforeMethod
    public void testMethodInitialize() {
        driver = new ChromeDriver();
    }
0 голосов
/ 12 февраля 2019

Вы используете @AfterMethod здесь, и @AfterMethod выполняется после каждого выполнения метода, а в вашем случае после одной итерации из Excel он выполняется и экземпляр драйвера заканчивается, потому что вы использовали driver.quit() здесь,

Таким образом, чтобы решить эту проблему, вы должны использовать @AfterTest вместо @AfterMethod, так как @AfterTest будет работать только тогда, когда все строки из Excel будут выполнены и ваш тестовый пример завершен.

...