2014-10-16 2 views
1

Вот как я объявляю драйвер FireFox:Как объявить драйвер глобальным?

public static WebDriver driver = new FirefoxDriver(); 

Я разместить код, указанный выше за пределами основной и в моем классе (глобальный)

Вот как я объявляю драйвер хром:

System.setProperty("webdriver.chrome.driver", "/path/xxx/xxx/xx"); 
WebDriver driver = new ChromeDriver(); 

Я размещаю код, указанный выше, в главном

Вот проблема:

Я хочу, чтобы ChromeDriver был глобальным, но I NEED, чтобы установить свойство до. Но я помещаю System.setProperty("xx","xx"); в основной корпус. Потому что он дает ошибку при размещении снаружи.

Здесь пользователь пытается сделать то же самое, что и я. Попытка запускать разные браузеры с использованием одного и того же драйвера: How to run Selenium tests in multiple browsers for cross-browser testing using Java?

Ответ заключается в объявлении драйвера в основном корпусе, а не в качестве константы раньше.

Моя проблема: Все функции требуют объявления водителя раньше. Функции вызова, которые используют driver. Если я объявляю в основном, мне нужно постоянно передавать его как параметр ко всем функциям. Я не хочу этого делать. Ниже приведен пример функции

public static void a(){ 

driver.findElement(By.id("hi")); 

} 
+0

Зачем вам нужно, чтобы сделать его глобальным, в первую очередь? – t0mppa

+0

Поскольку все функции зависят от него. У них у всех есть «водитель». Они ВСЕ будут полностью разорваться, если я не сделаю это глобальным. – Indigo

+0

Вы можете всегда передавать его различным классам в своих конструкторах и использовать его как переменную класса. В любом случае, Java не поддерживает глобальные переменные, переменная всегда находится в области действия какого-либо класса или метода. – t0mppa

ответ

5

Как о чем-то вроде:

class SomeTest { 

    static WebDriver driver; 

    public static void main(String[] args) { 

     System.setProperty("key", "value"); 
     driver = new ChromeDriver(); 
    } 

    public static void a() { 

     driver.findElement(By.id("hi")); 

    } 
} 
+0

... и вы были правы! Я даже не думал о просто инициализации Webdriver. Я инициализировал ChromeDriver. Спасибо buddy :) – Indigo

+1

@OctavianRox, не думайте об этом как о «глобальной» переменной. В Java нет таких. Все это поддерживается с помощью Scope. В этом случае «драйвер» будет находиться в области действия класса и является «полем». Поле доступно по всему классу. – sircapsalot

+0

Благодарим вас за это @sircapsalot – Indigo

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