Как выйти из драйвера appium и запустить другой тест без идентификатора сеанса — ошибка null

#java #android #appium #driver #exit

#java #Android #appium #драйвер #выход

Вопрос:

Я использую BrowserStack. Перед каждым тестом я создаю новый драйвер. После каждого сценария, который я использую driver.quit() , потому что я хочу закрыть сеанс.

Когда у меня есть более одного тестового примера (например, два файла сценариев) для запуска, я получаю сообщение Идентификатор сеанса равен нулю. Использование WebDriver после вызова quit()?.

Когда я не использую driver.quit() или использую driver.closeApp() , первый сеанс занимает слишком много времени, и даже если запускается второй, я не могу его использовать (я имею в виду, я не могу нажимать на элементы). Я запускаю свои тесты с помощью junit runners.

Есть ли возможность выйти из драйвера после каждого теста и запустить другой без этой ошибки?

 private static AppiumDriver<MobileElement> driver;

@Before
public void before() {
    driver = new AndroidDriver<>(new URL("URL"), capabilities);
}

public static AndroidDriver<MobileElement> getDriver() {
    return (AndroidDriver<MobileElement>) driver;
}

@After
public void after() {
   if ( driver == null ) {
       driver.quit();
       driver = null;
   }
}
  

Комментарии:

1. сталкиваетесь ли вы с этой проблемой при запуске скрипта в local или BrowserStack?

2. @Mani в BrowserStack

Ответ №1:

Если вы столкнулись с этой проблемой, пожалуйста, ознакомьтесь с документацией BrowserStack для демонстрационного кода Junit здесь, это поможет вам решить проблему. Я вижу, что в вашем коде упоминается «До» и «После», только не «Перед каждым» / «После каждого».

Пожалуйста, попробуйте это

Комментарии:

1. Я вижу, что в демонстрационном коде есть @beforeEach, где вы настраиваете среду. Затем у вас есть статический метод для создания драйвера, и вы используете его в каждой тестовой ссылке . В моем случае я думаю, что проблема в том, что новый драйвер все еще хочет использовать предыдущий сеанс, и я не знаю почему.

2. В принципе, если вы используете только аннотацию Before amp; After, что означает, что сеанс будет представлять собой целый набор тестов, содержащий несколько тестов, я думаю, что здесь сеанс также не завершается, создайте, чтобы он запускал один и тот же идентификатор сеанса для всех ваших тестовых случаев, попробуйте с помощью «beforeEach» / «afterEach»

3. После каждого теста драйвер равен null, я это проверил. И новый создается перед следующим тестом. С аннотацией beforeEach и afterEach у меня есть сообщение Не удается установить io.appium.java_client. Поле MobileElement в org.openqa.selenium.remote. RemoteWebElement

4. Если возможно, пожалуйста, опубликуйте весь журнал appium здесь, проверит его

5. Спасибо за вашу помощь. Я решил это. Проблема была с элементами. Я не очистил их после тестирования, и скрипт хотел использовать MobileElements из предыдущего теста..