2016-01-12 4 views
0
public void tearDown() 
{  
     driver.quit(); 
} 

public void signInFacebook(String link) throws InterruptedException { 
    log.header("USER SIGN IN VIA FACEBOOK"); 
    log.step("Click the Sign In Link"); 
    clickLink(link); 
    Thread.sleep(3000); 
    log.log("click success......."); 
    log.step("Click 'Sign in with Facebook' Link "); 

    // Store the current window handle 
    String parentHandle = driver.getWindowHandle(); 

    // Perform the click operation that opens new window 
    driver.findElement(By.cssSelector(CONSTANTs.FB_SIGN_IN)).click(); 
    Thread.sleep(5000); 

    // Switch to new window opened 
    log.divider("Facebook Login Screen.....Enter Details Below"); 
    for (String childHandle : driver.getWindowHandles()) { 
     driver.switchTo().window(childHandle); 

     if (!childHandle.equals(parentHandle)) { 
      log.step("Enter Email address"); 
      driver.findElement(By.cssSelector(CONSTANTs.FB_EMAIL_TXTBOX)) 
        .sendKeys(CONSTANTs.EMAIL_ADDRESS); 
      Thread.sleep(2000); 
      log.step("Enter password"); 
      driver.findElement(By.cssSelector(CONSTANTs.FB_PASSWORD_TXTBOX)) 
        .sendKeys(CONSTANTs.FB_PASSWORD); 
      Thread.sleep(2000); 
      log.step("Click Log_In button"); 
      driver.findElement(By.cssSelector(CONSTANTs.LOG_IN)).click(); 
      Thread.sleep(2000); 
      log.log("Check for First Sign In or Return User.......wait"); 
      WebDriver switchPage = driver.switchTo().window(parentHandle); 
      try { 
       if (switchPage.getWindowHandle().contains(parentHandle)) { 
        driver.switchTo().window(childHandle); 
        log.log("Indo App NOT installed..... Click Ok to accept FB permissions..."); 
        optionalClick(By.cssSelector(CONSTANTs.OK_CONTINUE_AS)); 
        driver.switchTo().window(parentHandle); 
       } 
       log.log("DONE....... "); 
       // break; 
      } catch (Exception e) { 
       log.log("Indo App Already exist on Users Fb acct ... Move to next screen"); 
      } 
      break; 
     } 
    } 

    log.log("Check if User is Signed In or Has Signed In with another account.......wait"); 
    Thread.sleep(5000); 
    try { 
     if ((driver.findElement(By.cssSelector(CONSTANTs.MY_ACCOUNT_LINK))) 
       .isDisplayed()) { 
      log.log("First Sign In ....... Successfully Logged in Using FB."); 
      Thread.sleep(3000); 
      tearDown(); 
     } 
    } catch (Exception e) { 
     log.header2("Second Sign In ...... User Already signed In with a different Acct........ pls wait"); 
    } 
    driver.switchTo().window(parentHandle);  
    Thread.sleep(3000); 

    try { 
     if (driver.findElement(
       By.cssSelector(CONSTANTs.ALREADY_SIGNED_UP_PASSWD_TXTBOX)) 
       .isDisplayed()) { 
      log.log("User Already signed Up with a NATIVE acct .....Please Enter Password for Native acct"); 
      driver.findElement(
        By.cssSelector(CONSTANTs.ALREADY_SIGNED_UP_PASSWD_TXTBOX)) 
        .sendKeys(CONSTANTs.NATIVE_PASSWORD); 
      Thread.sleep(2000); 
      driver.findElement(
        By.cssSelector(CONSTANTs.ALREADY_SIGNED_UP_BTN)) 
        .click(); 
      Thread.sleep(2000); 
      log.log("Successfully Linked NATIVE acct with FB."); 
      Thread.sleep(3000); 
      tearDown(); 
     } 

    } catch (Exception e1) { 
     log.log(" acct....wait, checking other acct......"); 
    } 


    try{ 
     if (driver.findElement(
       By.cssSelector(CONSTANTs.SIGN_IN_WITH_GOOGLE_BTN)) 
       .isDisplayed()) { 
      log.log("User is Signed in Already with GOOGLE account ... Click Google button to Link account."); 
      Thread.sleep(3000); 
      driver.findElement(
        By.cssSelector(CONSTANTs.SIGN_IN_WITH_GOOGLE_BTN)) 
        .click(); 
      Thread.sleep(2000); 
      log.log("Successfully Linked ."); 
      Thread.sleep(3000); 
      tearDown(); 
     } 
    } 
     catch(Exception e2) { 
      log.log("No Google acct present either.... Please contact Gigya customer support...."); 
      Thread.sleep(3000); 
      tearDown(); 
     } 
} 

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

Пожалуйста, я проверил предыдущие решения, но не работал для меня. Driver.close или quit должен работать, но его нет, возможно, я что-то делаю неправильно ..... Спасибо за любую помощь заранее.

Исключение в теме "main" org.openqa.selenium.remote.SessionNotFoundException: Идентификатор сеанса равен null. С помощью WebDriver после вызова функции quit()? Информация о сборке: версия: '2.45.0', версия: '32a636c', время: '2015-03-05 22:01:35' Системная информация: хост: 'Ola-PC', ip: '10 .255.253.14 ', os.name:' Windows 7 ', os.arch:' amd64 ', os.version:' 6.1 ', java.version:' 1.7.0_76 ' Информация о драйвере: driver.version: RemoteWebDriver at org.openqa .selenium.remote.HttpCommandExecutor.execute (HttpCommandExecutor.java:125) на org.openqa.selenium.remote.service.DriverCommandExecutor.execute (DriverCommandExecutor.java:66) на org.openqa.selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:572) в org.openqa.selenium.remote.RemoteWebDriver $ RemoteTargetLocator.window (RemoteWebDriver.java:890) на com.independent.helper.testPageNavi.signInFacebook (testPageNavi.java:475) в точке с om.independent.helper.testing.main (testing.java:113)

ответ

2

Вы закрываете webdriver после одного конкретного теста. Это хороший подход, но вам нужно будет запустить новый webdriver для каждого нового теста, который вы хотите запустить.

У вас есть два варианта. 1. сделайте новый webdriver после каждого теста. 2. Вернитесь на начальную страницу, чтобы начать новый тест.

Я рекомендую вариант 1.

@Before 
public void before() { 
    driver = new ChromeDriver(); 
} 

@After 
public void tearDown() 
{ 
    driver.quit(); 
} 

@Test 
public void signInFacebook(String link) throws InterruptedException { 
    //Do 1 test here 
} 
+0

Спасибо за ваш ответ, но не могли бы вы дать мне образец. Также, если я не назову close(), на первом успешном тестовом проходе, я все равно получаю оставшиеся 2 сообщения в распечатке catch. почему это?. – Joe

+0

Каждая попытка 1 испытание? если это так, почему вы не используете модульные тесты или по крайней мере отдельные методы – legopiraat

+0

.... Да, вы правы ..... я понимаю, но использую только один метод, потому что его непрерывный знак в процессе, который открывает экраны один за другим. Может быть, мне следует использовать разные методы, как вы предлагали, и называть каждый метод другими методами непрерывным процессом ... вы меня поняли? имеет ли смысл делать это именно так? поэтому я имею в виду: 'method1() {// code} .... method2() {method1() ... continue code} и т. д. – Joe

Смежные вопросы