2013-09-26 3 views
0

Затраченных 1 день нахождения решения следующей задачи:Селен WD NullPointerException при выполнении простого, JS кода

не может выполнить даже простой JS-кода с помощью селена WD. Он всегда возвращает исключение NullPointerException. Уже прочитал тонны ответов, но до сих пор не может найти причину. Приведенный ниже код является кодом через 1 день исследования (я просто попробовал все):

WebDriver driver2; 
JavascriptExecutor js = (JavascriptExecutor)driver2; 
driver.get(baseUrl+ "/"); 
js.executeScript("return showAlert()"); 

Вот исходный код, который не работает, а также:

public class DPT_class { 
     private WebDriver driver; 

     @Before 
     driver = new FirefoxDriver(); 
     JavascriptExecutor js = (JavascriptExecutor) driver; 

     @Test 
     //some testing code here 
     driver.get(baseUrl+ "/"); 
     js.executeScript("return showAlert()"); 
} 

то же самое для любого другого js, например alert (document.title) с возвратом и без кавычек. * baseUrl предопределен, конечно.

Спасибо!

+4

Вы когда-нибудь инициализировали экземпляр 'driver2'? – Smit

+0

Согласитесь с @Smit на этом: приведенный пример кода не присваивает значение 'driver2', и в этом случае' js' тоже не будет иметь значения. Ваш компилятор должен жаловаться на то, что вы используете значение, которое не «определенно назначено». – rutter

+0

Я отредактировал оригинал сообщения. К сожалению, эта вещь не помогает :( – dred17

ответ

2

Как говорит @Smit, и на ваш NullPointerException

Вы фактически никогда не инициализируется свой WebDriver объект, и вы attemting бросить нулевой объект, к JavaScriptExecutor.

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

WebDriver driver = new ChromeDriver(); 
WebDriver driver = new FirefoxDriver(); // etc... 

Кроме того, почему вы пытаетесь использовать 2 объекта драйвера? У вас должен быть только 1. Сохраните свой объект с именем driver.

+0

Я отредактировал оригинал сообщения. К сожалению, эта вещь не помогает :( – dred17

0

Изменились

private WebDriver driver; 
     driver = new FirefoxDriver(); 
     JavascriptExecutor js = (JavascriptExecutor) driver; 

в

WebDriver driver = new FirefoxDriver(); 
    JavascriptExecutor js = (JavascriptExecutor) driver; 

Понятия не имею, почему, но он работает сейчас! Большое спасибо!

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