Nano Hash - криптовалюты, майнинг, программирование

Как открыть новый сеанс chromedriver после driver.quit?

Я пытаюсь запустить два файла функций (Cucumber + JUnit), и мне нужно закрыть браузер между функциями. Но после закрытия второй функции не удалось инициировать новый сеанс, и я получаю

org.openqa.selenium.remote.SessionNotFoundException: идентификатор сеанса равен нулю.

Использование WebDriver после вызова quit(). Как я могу избежать этой ошибки?

У меня есть код ниже для того же самого:

 @Before
public void initPage(){
    loginPage = PageObjectFactory.getPageObject(LoginPage.class);
    loginPage.loadPage();
}

@Given("^user login to stg \"([^\"]*)\" with \"([^\"]*)\" and \"([^\"]*)\"$")
public void userLoginToStgWithAnd(String arg0, String arg1, String arg2) throws Throwable {

    Properties prop = new Properties();
    InputStream input = null;
    input = new FileInputStream("src/main/resources/application.properties");
    prop.load(input);

    arg0 = System.getProperty("url");
    arg1 = prop.getProperty("user.username");
    arg2 = System.getProperty("user.password");
    Map<IElement, String> map = new LinkedHashMap<>();
    map.put(loginPage.stgPassword, arg2);
    map.put(loginPage.stgUsername, arg1);
    driver = WebDriverConfig.setChromeProfile();
    driver.get(arg0);
    Thread.sleep(3000);
    loginPage.waitForJStoLoad();
    loginPage.fillForm(map);
    loginPage.clickStgLogin();
    Thread.sleep(3000);
}

@And("^user logout$")
public void userLogout() throws Throwable {
    loginPage.waitForJStoLoad();
    loginPage.waitForAngular();
    loginPage.openUserProfile();
    loginPage.clickLogout();
    loginPage.waitForJStoLoad();
    driver.close();
}
23.07.2017

Ответы:


1

Вы можете сделать это следующим образом:

driver.quit();
driver = null; 
driver = new ChromeDriver();
24.07.2017
  • Это не работает. У меня есть org.openqa.selenium.remote.SessionNotFoundException: идентификатор сеанса равен нулю. Использование WebDriver после вызова quit()? 24.07.2017
  • убедитесь, что вы инициализируете правильный драйвер браузера. Я только что написал хромированный драйвер в качестве ссылки! 24.07.2017
  • Да, я использую Chromedriver. И это решение не работает 24.07.2017
  • Возможно, вы допускаете логическую ошибку! Убедитесь, что драйвер не аннулирован, т. Е. Driver = null; перед вызовом driver.quit() Также, если вы используете статическую переменную WebDriver, попробуйте использовать нестатическую переменную 25.07.2017
  • Кроме того, убейте экземпляры chromedriver из диспетчера задач. и используйте driver.close(); непосредственно перед driver.quit(); оператор Я вижу, что вы используете его в функции или во время выполнения теста, используйте его непосредственно перед driver.quit(); 25.07.2017

  • 2

    если вы хотите закрыть браузер, вы можете использовать

     driver.close() //in java, this will close only active browser, session will not killed.
    

    Эта ссылка поможет вам получить дополнительную информацию Как закрыть все окно браузера, оставив веб-драйвер активным?

    23.07.2017
  • Если я использую driver.close(), я получаю следующую ошибку: org.openqa.selenium.remote.SessionNotFoundException: такого сеанса нет (информация о драйвере: chromedriver=2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41), платформа = Windows NT 10.0.14694 x86_ ) (ВНИМАНИЕ: сервер не предоставил никакой информации о трассировке стека) 23.07.2017
  • эй, используйте driver.close вместо driver.quit. если вы используете driver.quit, сеанс будет завершен, поэтому мы не сможем его использовать. нужно снова запустить драйвер. 23.07.2017
  • Но я только что сказал, что когда я использую driver.close, я не получаю такой ошибки сеанса. 23.07.2017
  • код выглядит хорошо. отсутствует driver.quit, поэтому обычно мы не можем получить это исключение. может быть это loginPage.clickLogout(); метод может содержать driver.quit. не могли бы вы посмотреть один раз, если нет 23.07.2017
  • как правило, мы знаем, что SessionNotFoundException возникает, когда мы используем драйвер после driver.quit. поэтому нужно проверить скрипт, используем ли мы экземпляр драйвера даже после выхода? 23.07.2017
  • В loginPage.clickLogout(); Метод я только нажимал на кнопку. Что касается следующего комментария - после driver.close я хочу открыть браузер и запустить другой файл функций. 23.07.2017
  • может быть, вы знаете, как очистить кеш браузера Chrome (не куки)? 23.07.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..