#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 из предыдущего теста..