Перейти к содержимому

Фотография

Повторное открытие FireFox


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 FR33D

FR33D

    Новый участник

  • Members
  • Pip
  • 64 сообщений

Отправлено 10 июня 2013 - 12:01

Добрый день. Запускаю тест, указаный ниже, и наблюдаю картинку того, что браузер FF запускается 2 лишних раза, хотя при запуске Хрома и ИЕ он выскакивать не должен. Проблема заключается в том что driver = new FirefoxDriver(); находится в @Begin. Так вот вопрос. Как мне сделать так, чтоб driver = new FirefoxDriver(); запускал FF только 1 раз, а к остальным браузерам отношения не имел?
Вот код:
package com.example.tests;

import java.io.File;
import java.io.IOException;
import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeDriverService; 
import org.openqa.selenium.ie.InternetExplorerDriverService;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.Select;

public class LoginTest {
  private static ChromeDriverService service;
  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();
  
 
  @Before
  public void setUp() throws Exception {
	   service = new ChromeDriverService.Builder()
       .usingDriverExecutable(new File("C:/Documents and Settings/Administrator/workspace/chromedriver.exe"))
       .usingAnyFreePort()
       .build();
	   driver = new FirefoxDriver();
    System.setProperty("webdriver.ie.driver", "C:/Documents and Settings/Administrator/workspace/IEDriverServer.exe");
   // System.setProperty("webdriver.firefox.driver", "C:/Program Files/Mozilla Firefox/firefox.exe");
    service.start();
    baseUrl = "http://192.168.2.168/";
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
  }
  
  @Test
  public void testLogin() throws Exception {    
   	    driver.get(baseUrl + "/");
	    driver.findElement(By.linkText("Login")).click();
	    driver.findElement(By.linkText("Candidate")).click();
	    driver.findElement(By.name("login")).clear();
	    driver.findElement(By.name("login")).sendKeys("FR33DeGM@gmail.com");
	    driver.findElement(By.name("password")).clear();
	    driver.findElement(By.name("password")).sendKeys("Asus2938");
	    driver.findElement(By.cssSelector("input.login")).click(); 
  }
  
  @Test
  public void testChrome() throws Exception
  {
	  driver = new ChromeDriver(service);
	  driver.get(baseUrl + "/");
	  driver.findElement(By.xpath("/html/body/div[1]/div/div[1]/ul/li[1]/a")).click();
	 // driver.findElement(By.linkText("Login")).click();
	 // driver.findElement(By.linkText("Candidate")).click();
	  driver.findElement(By.xpath("/html/body/div[1]/div/div[1]/div[1]/div/a[2]")).click();
	  driver.findElement(By.name("login")).clear();
	  driver.findElement(By.name("login")).sendKeys("FR33DeGM@gmail.com");
      driver.findElement(By.name("password")).clear();
      driver.findElement(By.name("password")).sendKeys("Asus2938");
      driver.findElement(By.cssSelector("input.login")).click();  
  }
  
  @Test
  public void testIE8() throws Exception
  {
	  driver = new InternetExplorerDriver();
	  driver.get(baseUrl + "/");
	  driver.findElement(By.linkText("Login")).click();
	  driver.findElement(By.linkText("Candidate")).click();
	  driver.findElement(By.name("login")).clear();
	  driver.findElement(By.name("login")).sendKeys("FR33DeGM@gmail.com");
      driver.findElement(By.name("password")).clear();
      driver.findElement(By.name("password")).sendKeys("Asus2938");
      driver.findElement(By.cssSelector("input.login")).click();  
  }
  
  @After
  public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }

  private boolean isElementPresent(By by) {
    try {
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
      return false;
    }
  }

  private boolean isAlertPresent() {
    try {
      driver.switchTo().alert();
      return true;
    } catch (NoAlertPresentException e) {
      return false;
    }
  }

  private String closeAlertAndGetItsText() {
    try {
      Alert alert = driver.switchTo().alert();
      String alertText = alert.getText();
      if (acceptNextAlert) {
        alert.accept();
      } else {
        alert.dismiss();
      }
      return alertText;
    } finally {
      acceptNextAlert = true;
    }
  }
}

  • 0

#2 Krain

Krain

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Ермошкин Сергей

Отправлено 10 июня 2013 - 13:08

Перенесите вызов FF в ваш первый тест т.е. удалите из @Before
driver = new FirefoxDriver();
и добавьте в первый @Test
@Test
  public void testLogin() throws Exception {    
            driver = new FirefoxDriver();
            driver.get(baseUrl + "/");
            driver.findElement(By.linkText("Login")).click();
            driver.findElement(By.linkText("Candidate")).click();
            driver.findElement(By.name("login")).clear();
            driver.findElement(By.name("login")).sendKeys("FR33DeGM@gmail.com");
            driver.findElement(By.name("password")).clear();
            driver.findElement(By.name("password")).sendKeys("Asus2938");
            driver.findElement(By.cssSelector("input.login")).click(); 
  }

  • 1

#3 FR33D

FR33D

    Новый участник

  • Members
  • Pip
  • 64 сообщений

Отправлено 11 июня 2013 - 05:44

Перенесите вызов FF в ваш первый тест т.е. удалите из @Before

driver = new FirefoxDriver();
и добавьте в первый @Test
@Test
  public void testLogin() throws Exception {    
            driver = new FirefoxDriver();
            driver.get(baseUrl + "/");
            driver.findElement(By.linkText("Login")).click();
            driver.findElement(By.linkText("Candidate")).click();
            driver.findElement(By.name("login")).clear();
            driver.findElement(By.name("login")).sendKeys("FR33DeGM@gmail.com");
            driver.findElement(By.name("password")).clear();
            driver.findElement(By.name("password")).sendKeys("Asus2938");
            driver.findElement(By.cssSelector("input.login")).click(); 
  }


Большое спасибо, я так делал, но все равно не работало. Позже уже разобрался в чем там была проблема сам. Но все равно низкий поклон за то, что отозвались.
  • 1

#4 FR33D

FR33D

    Новый участник

  • Members
  • Pip
  • 64 сообщений

Отправлено 11 июня 2013 - 05:47

А так же еще интересует один вопрос.
Когда тест проходит в FF и Chrome - авторизация - без проблем. Когда же в IE8, то после первого теста меня логинит на сайт и последующие тесты не срабатывают, так как проходит автоматическая авторизация. Как сделать так чтоб все шаги выполнялись и не было авторизации. Чтоб каждый раз когда я провожу тест - меня логинило как уникального пользователя без сохранения пароля?
Заранее спасибо.
  • 0

#5 Julia_Sh

Julia_Sh

    Новый участник

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Юлия
  • Город:Новосибирск

Отправлено 11 июня 2013 - 05:47

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

Было бы неплохо рассказать, в чем же была проблема, и каково ваше решение. Не исключено, что кому-то поможет.
  • 0

#6 FR33D

FR33D

    Новый участник

  • Members
  • Pip
  • 64 сообщений

Отправлено 11 июня 2013 - 05:52


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

Было бы неплохо рассказать, в чем же была проблема, и каково ваше решение. Не исключено, что кому-то поможет.

А проблема была в большом количестве лишнего кода в Before. Я, как начинающий тестер, не знал как лучше подвязать IE и Chrome и получилась каша. Когда полностью переделал Before - все заработало.
File IE8Driver = new File("C:/Documents and Settings/Administrator/workspace/IEDriverServer.exe");
       System.setProperty("webdriver.ie.driver", IE8Driver.getAbsolutePath());
	   File ChrDriver = new File("C:/Documents and Settings/Administrator/workspace/chromedriver.exe");
	   System.setProperty("webdriver.chrome.driver", ChrDriver.getAbsolutePath());
    baseUrl = "http://192.168.2.168/";
А так же еще интересует один вопрос.
Когда тест проходит в FF и Chrome - авторизация - без проблем. Когда же в IE8, то после первого теста меня логинит на сайт и последующие тесты не срабатывают, так как проходит автоматическая авторизация. Как сделать так чтоб все шаги выполнялись и не было авторизации. Чтоб каждый раз когда я провожу тест - меня логинило как уникального пользователя без сохранения пароля?
Заранее спасибо.
  • 0

#7 Krain

Krain

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Ермошкин Сергей

Отправлено 13 июня 2013 - 06:51

FF и Chrome запускают всегда чистый браузер без кук и прочего, как вариант можете перед началом теста почистить куки браузера
driver.manage().deleteAllCookies();

  • 1

#8 FR33D

FR33D

    Новый участник

  • Members
  • Pip
  • 64 сообщений

Отправлено 13 июня 2013 - 10:54

Большое спасибо за подсказку) Плюс от меня)
  • 0

#9 Krain

Krain

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Ермошкин Сергей

Отправлено 13 июня 2013 - 13:54

всегда пожалуйста, обращайтесь если возникнут вопросы =)
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных