Selenium - org.openqa.selenium.remote.SessionNotFoundException: идентификатор сессии является нулевым

Я могу запустить один тест, но при попытке выполнить второй выдается это исключение.

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

Я сомневаюсь, как изменить код, чтобы он запускался для всех тестов, закрывая браузер между ними.

package com.***.pageobjects;

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver;

public class Browser {

    private static WebDriver driver = new ChromeDriver();

      public static WebDriver driver() {    
          return driver;
      }

      public static void open(String url) {    
          driver.get(url);
      }

      public static void close() {    
          driver.quit(); 
          System.out.println(driver.toString());
      }

}




public class LoginPage extends LoadableComponent<LoginPage> {

    private WebDriver driver;

    static String url = "***";
    private static String title = "***";



    public LoginPage(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(driver, this); 
        }

      @Override  
      protected void load() {    
          Browser.open(url);
          driver.manage().window().maximize();  
      }

      @Override  
      protected void isLoaded() throws Error {    
          assertTrue("Login page not loaded",        
                  driver.getTitle().equals(title));  
      } 


      public MainPage MainPage() {    
          MainPage mainpage = new MainPage(driver);    
          return mainpage;
          }
}


public class MainPage {

     private WebDriver driver;


        @FindBy(id = "user-userName")
        private WebElement userName;

        @FindBy(id = "password") 
        private WebElement pwd;

        @FindBy(id = "btnLogin") 
        private WebElement buttonlogin;

        public MainPage(WebDriver driver) {    
            this.driver = driver;
            PageFactory.initElements(driver, this);
        }


          public void login(String user, String password)
          {
              userName.sendKeys(user);
              pwd.sendKeys(password); 
              buttonlogin.click();

          }
}

public class areaPersonalSuite {



    @cucumber.api.java.Before
    public void beforeScenario() {
        System.setProperty("webdriver.chrome.driver","./src/test/resources/drivers/chromedriver");

    }

     @Given("Soy cliente") 
      public void soyCliente() {    

     }

    @When("^Accedo a mi Area Personal con usuario (.*) y password (.*)$")         
    public void accedoAreaPersonal(String user, String password){
          // Create an instance of Home page     
          LoginPage loginpg = new LoginPage(Browser.driver());
          // Navigate to the Home page      
          loginpg.get();
          loginpg.MainPage().login(user,password);

      }

    @Then ("el sistema muestra mi dirección, teléfono y email correctamente")
    public void direccionTelefonoEmail(){
        LoginPage telefono = new LoginPage(Browser.driver());
        telefono.MainPage().addressCheck();



      @cucumber.api.java.After
      public void afterScenario() {
          Browser.close();

1 ответ

Если я правильно понимаю, ваша проблема больше связана с управлением драйверами. Я бы предложил использовать проверенную существующую среду, такую ​​как QAF, которая занимается управлением драйверами.

Это позволит вам настроить драйвер через свойства или из xml-файла конфигурации запуска и создаст экземпляр драйвера для теста в соответствии с конфигурацией запуска. Вы можете запустить один и тот же тест в другом браузере без изменения кода.

public class LoginPage extends WebDriverTestPage{
    @FindBy("locator.in.repository")
    private WebElement ele;

    public WebElement getEle(){
      return ele;
    }
}

Вы также можете использовать BDD из QAF или gherkin с QAF. Вы можете проверить пример проекта или вот пример QAF огурчик

Другие вопросы по тегам