Как решить проблему NosuchSessionException в огуречном селене? мы используем @Before hook и @After hook - PullRequest
0 голосов
/ 14 апреля 2020
public class TestBase {

        public static WebDriver driver;
        public static Properties property;

        public TestBase()
        {

          try
          {
            property=new Properties();
            FileInputStream file=new FileInputStream(System.getProperty("user.dir")+ "/src/main/java/com/qa/VitalTracks/Config/Config.properties");
            property.load(file);


        }
        catch(FileNotFoundException e)
        {
            e.printStackTrace();
        }

        catch(IOException e)
        {
            e.printStackTrace();
        }
        }

        public static void InitializationAndLaunch()
        {

          String browsername=property.getProperty("Browser");

          try
          {
               ChromeOptions options = new ChromeOptions();
               options.addArguments("--disable-notifications");

              if(browsername.equalsIgnoreCase("chrome"))
             {
               String chromepath=property.getProperty("ChromeDriverPath");
               System.setProperty("webdriver.chrome.driver",chromepath); 
               driver=new ChromeDriver(options);
             }

              else if(browsername.equalsIgnoreCase("firefox"))
             {
               String firefox=property.getProperty("FirefoxDriver");
               System.setProperty("webdriver.gecko.driver",firefox); 
               driver=new FirefoxDriver();
             }

              else if(browsername.equalsIgnoreCase("internetexplorer"))
             {
               String internetexplorer=property.getProperty("InternetExplorerPath");
               System.setProperty("webdriver.ie.driver",internetexplorer); 
               driver=new InternetExplorerDriver();
             }
          }
           catch(IllegalStateException e)
           {
             e.printStackTrace();
           }

          driver.manage().window().maximize();
          driver.manage().deleteAllCookies();

          long PageLoadTimeOut=Long.parseLong(property.getProperty("PageLoadTimeOut"));
          driver.manage().timeouts().pageLoadTimeout(PageLoadTimeOut, TimeUnit.SECONDS);

          long Implicitwait=Long.parseLong(property.getProperty("Implicitwait"));
          driver.manage().timeouts().implicitlyWait(Implicitwait, TimeUnit.SECONDS);

          driver.get(property.getProperty("Url"));

        }


    }

    /*Step Definition File:*/
    public class Login_StepDefinition extends TestBase
    {

        VTLoginPage loginTC=new VTLoginPage();
        VTDashboardPage dashboardTC=new VTDashboardPage();
        VTLoginPageObjects loginvt=new VTLoginPageObjects();



      @Before
      public static void launchbrowser()
      {
          InitializationAndLaunch();
      }



        @Given("^Verify the Login page title is \"([^\"]*)\" or not$")
        public void verify_the_Login_page_title(String pagetile)
        {
            //Initialization(); 
          String title=loginTC.ValidateTitle();
          Assert.assertEquals(pagetile, title);
         // driver.quit();

        }

        @Given("^Logo on Login page$")
        public void logo_on_Login_page() throws InterruptedException
        {
            //Initialization();
            boolean logo=loginTC.ValidateLogo();
            Thread.sleep(3000);
            Assert.assertTrue(logo);
            //driver.quit();

        }

        @Given("^Select the Check box$")
        public void select_the_Check_box() throws InterruptedException
        {   
            //Initialization();
            loginTC.PerformclickOnCheckBox();
            Thread.sleep(3000);
            boolean checkvalue=loginTC.ValidateLoginPageCheckBox();
            Thread.sleep(3000);
            Assert.assertTrue(checkvalue);
            //driver.quit();

        }

        @Given("^Enter the invalid username and password$")
        public void enter_the_invalid_username_and_password(DataTable data) throws InterruptedException
        {
            //Initialization();
            java.util.List<java.util.List<String>> alldata;
            alldata=data.raw();
            loginvt.usernames.sendKeys(alldata.get(1).get(0));
            loginvt.passwords.sendKeys(alldata.get(1).get(1));
            loginvt.submitbutton.click();
            Thread.sleep(3000);
            String invalidtitle=loginvt.invalidcredentilas.getText();
            Assert.assertEquals(alldata.get(1).get(2),invalidtitle);
            //driver.quit();
        }

        @Given("^Enter the valid credentials$")
        public void enter_the_valid_credentials() throws InterruptedException
        {

            dashboardTC=loginTC.Login(property.getProperty("username"), property.getProperty("password"));
            //driver.quit();
        }

        @After
        public static void closeBrowser()  
        {

            driver.quit();

        }       
    }

Я запускаю браузер с перехватом @Before и закрываю браузер в @After как driver.quit, но он работает только для первого сценария, но позже для всего сценария ios он показывает исключение для всех сценарий, кроме первого сценария.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...