2015-10-13 4 views

ответ

1

Я вижу, что вы объявляете новый экземпляр WebDriver внутри метода @BeforeTest. Вы должны использовать экземпляр WebDriver, что вы объявленную вне @BeforeTest то есть вы уже объявили

static WebDriver driver; 

Используйте тот же driver внутри @BeforeTest. Поэтому внутри метода before вместо WebDriver driver = new FirefoxDriver(); напишите как driver = new FirefoxDriver();

Сделайте то же самое для других типов браузеров (например, сафари, хром).

и для вас классов страницы объекта, вы можете сделать что-то выглядит следующим образом:

public class TaxPage { 

    public static WebDriver driver; 

    public TaxPage(WebDriver driver) { 
     this.driver = driver; 
    } 

} 
+0

Большое спасибо, это было решение, которое я искал. Почему так много голосов по моему вопросу? Это действительно. – user3769888

+0

Взгляните на правила SO для «Как спросить». Например, лучше всего будет размещать фактический код вместо снимков экрана. Постарайтесь облегчить людям, пытающимся помочь. – AGill

0

Создайте класс, как показано ниже, и передать WebDriver в параметризующем конструктору и вызов драйвера как Page.driver всякий раз, когда вам это нужно

public class Page 
    { 
     public static WebDriver driver; 

     public Page(WebDriver driver) 
     { 
      Page.driver = driver; 
     } 
    } 

Надеется, что это поможет вам :)

+0

Если я пишу весь код внутри основного метода, мой тест выполняется нормально. Но если я использую аннотации BeforeTest и Test, я получаю исключение с нулевым указателем. Что происходит не так? – user3769888

+0

Причина может заключаться в том, что вы не объявляете webdriver вне вас BeforeTest, поскольку я сделал это публичным статическим драйвером WebDriver; -> это вне любой функции. Причина, по которой вы должны это сделать, поскольку в соответствии с вашей функцией end jvm удаляет всю связанную переменную для нее. поэтому, если вы хотите использовать его, укажите экземпляр WebDriver вне вашей функции перед тестированием. –