2013-07-29 7 views
3

Я использую Junit 4 и Selenium webdriver в своем процессе автоматизации. У меня несколько тестовых примеров, и для каждого тестового примера требуется логин.поддерживать сеанс браузера в webdriver

Я хочу запустить все тестовые примеры в том же окне браузера и сохранить сеанс входа в систему вместо того, чтобы открывать новый браузер для каждого тестового примера и каждый раз выполнять вход в систему. (В моих текущих сценариях я запускаю webdriver в каждом тестовом случае, и он открывает новое окно для каждого тестового примера и делает логин каждый раз)

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

public class first { 
public static WebDriver driver; 
@BeforeClass 
public static void beforeClass() 
{ 
    System.setProperty("webdriver.chrome.driver", "E:/chromedriver.exe"); 
    System.out.println("Before class"); 
    driver = new ChromeDriver(); 
} 
@Test 
public void login()throws Exception 
{ 
     driver.get("URL"); 
    WebElement login = driver.findElement(By.xpath("my xpath"); 
    login.findElement(By.id("username")).sendKeys("username"); 
    login.findElement(By.id("password")).sendKeys("pwd"); 
    driver.findElement(By.xpath("my xpath")).click(); 
} 

}

создал второй класс:

public class second { 
public static WebDriver driver; 
{ 
@Test 
public void nextstep()throws Exception 
{ 
    WebElement buttons = driver.findElement(By.xpath("my xpath")); 
    buttons.findElement(By.className("Classname")).click(); 

} 

}

Набор тестов Класс:

@RunWith(Suite.class) 
@SuiteClasses({first.class, second.class}) 
public class testsuite 
{ 
public static WebDriver driver; 
@BeforeClass 
public static void setUpClass() 
{ 
    System.out.println("Master Setup"); 
} 

} 

ответ

0

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

Чтобы назначить метод в качестве метода установки Suite, поместите его в класс Suite, сделайте его статическим и аннотируйте его с помощью @BeforeClass (см. Пример в this answer).

В коде вы публикуемые, то driver переменный в первом классе и driver переменных во втором классе является не та же переменная. Вот почему инициализация в первом классе делает driver во втором классе инициализированным, и вы получаете NullPointerException.
Если вы хотите использовать одну и ту же переменную в обоих классах, вам необходимо определить базовый класс, который имеет нестатистическую переменную driver (почему вы сделали ее статичной в первую очередь?), А затем вывести как классические из базы класс.

+0

Ну, я получаю «Null.PointerException» – user2376425

+0

Жаль слышать, но я не могу вам помочь без более подробно. Не могли бы вы отправить код, генерирующий это исключение? – Joe

+0

Я вижу, вы редактировали свой вопрос, чтобы добавить код. Какая строка выдает «NullPointerException»? – Joe

-1
driver.get("URL"); 
WebElement login = driver.findElement(By.xpath("my xpath"); 

этот код вы должны поставить в @Before метод вместо @Test так же сессии будет продолжать

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