2013-04-02 1 views
0

Я использую Firefox для запуска своих тестовых примеров. Но теперь я хочу использовать Chrome. Я хочу инициализировать хром на уровне класса, точно так же, как я использовал Firefox. Но установка системного свойства на уровне класса дает ошибку, что я могу сделать? Использование файла свойств будет работать, если да, то как?Как инициализировать драйвер chrome на уровне класса, используя System.set ...?

public class BaseClass { 
System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver"); 
public static WebDriver driver = new ChromeDriver(); 

public void test(){ 
driver.get("http://asdf.com"); 

---- 
--- 
} 

} 
+0

С какой ошибкой вы столкнулись ??? –

+0

Я просто не могу дать System.setProperty («webdriver.chrome.driver», «/ home/Desktop/chrome32/chromedriver»); на уровне класса. который необходимо указать перед инициализацией драйвера хрома. – user2172723

+0

Я понял, какое сообщение об ошибке вы получаете в своей консоли? –

ответ

0
System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver"); 

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

+0

Это вопрос, как заставить эту вещь работать. В другом случае мы можем использовать файл свойств или какой-либо другой способ исправить это. – user2172723

0

Почему бы не попробовать инициализацией Chrome Driver в методе @BeforeTest в вашем базовом классе. То, что я сделал это так:

public class BaseTest { 

    /* 
    * 
    * This is a base class for all Test classes that we'll create to write tests in. 
    * A test-data set will belong to one/set of tests. 
    */ 


    protected WebDriver driver; 
    protected CustomLogger logger; 
    protected DependencyChecker dcheck; 
    protected TestDataReader td; 
    protected PropReader p; 
    protected HashMap<String, String> testDataMap; 
    private String testDataFilePath; 


    protected BaseTest(String testDataFilePath) 
    { 
     this.testDataFilePath = testDataFilePath; 
     p = new PropReader("environmentConfig.properties"); 
    } 


    @BeforeTest(description="Preparing environment for the test..") 
    public void prepareTest() 
    { 

     //other code 
     System.setProperty(p.get("chromeDriverName"),p.get("chromeDriverPath")); 
     File chrome = new File("/usr/bin/google-chrome"); 
     ChromeOptions options = new ChromeOptions(); 
     options.setBinary(chrome); 
     logger.log("Launching browser.."); 
     driver = new ChromeDriver(options); 
     driver.manage().window().maximize(); 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
     //other code   
    } 
    } 


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

+0

, потому что я не хочу вызывать новое окно браузера каждый раз, когда запускается новый тест. Я хочу, чтобы все тестовые примеры выполнялись в одном хромированном окне. Но ** driver = новый ChromeDriver(); **, вызывает новое окно Chrome. – user2172723

2

Вы холодный сделать это с помощью статического блока инициализации, как это:

public class BaseClass { 

    static { 
    System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver"); 
    } 

    protected WebDriver driver = new ChromeDriver(); 

    @Test 
    public void test(){ 
    driver.get("http://asdf.com"); 
    } 
} 

Как не указано, какой тест рамки вы используете вы можете сделать это, как это в TestNG (который я рекомендовал бы в любом случае):

public class BaseClass { 

    @BeforeSuite 
    public void setupChromeDriver() { 
    System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver"); 
    } 

    public static WebDriver driver = new ChromeDriver(); 

    public void test(){ 
    driver.get("http://asdf.com"); 
    } 
} 

@BeforeSuite аннотацию гарантирует, что метод выполняется перед первым испытанием тестового набора выполняется, так что это должно быть достаточно рано в любом случае.

0

Пожалуйста объявляю это так .. он должен работать

public class abcd { 


public static WebDriver driver; 


@BeforeMethod 
public static void start() 
{ 
    File file = new File("D:/abcd/chromedriver.exe"); 
    System.setProperty("webdriver.chrome.driver", file.getAbsolutePath()); 
    driver = new ChromeDriver(); 
      } 
} 

Он должен работать .. У меня была такая же ошибка. но когда u инициализируется таким образом, он работает. Пожалуйста, дайте нам знать.

А также, если вы не хотите закрывать сеанс браузера, попробуйте использовать @BeforeClass и @AfterClass. Он запускается один раз перед всем тестом один раз

+0

Ох Да, это решило проблему ..., спасибо всем ... – user2172723

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