Selenium — org.openqa.selenium.WebDriverException: b имеет значение null

Я всегда получаю это исключение ниже при выполнении тестов с Selenium Webdriver.

Я немного погуглил, но не смог найти ничего, связанного с этим исключением, но обнаружил, что это исключение возникает, когда вы выполняете JavaScript в своем коде, но я НЕ делаю этого.

Код, вызывающий это исключение: -

public void foo(){
    WebDriver driver = new FirefoxDriver();
    driver.get("www.xyz.com");
    driver.switchTo().defaultContent();
    driver.switchTo().frame(driver.findElement(By.xpath("(//iframe[contains(@id ,'easyXDM_default')])[2]")));
    WebElement resultsDiv = driver.findElement(By.xpath("(//textarea[contains(@id,'ext-comp')])[1]"));
    .....

}

Исключение возникает всякий раз, когда мы находим поле textarea в приложении, и поле находится внутри фрейма.

Ниже приведена трассировка стека:

org.openqa.selenium.WebDriverException: b имеет значение null

Продолжительность команды или время ожидания: 21 миллисекунда. Информация о сборке: версия: «2.41.0», редакция: «3192d8a6c4449dc285928ba024779344f5423c58», время: «2014-03-27 11:29:39». Информация о системе: хост: «HPDA0128», ip: « 10.9.60.36", os.name: "Windows 7", os.arch: "x86", os.version: "6.1", java.version: "1.7.0_55" Идентификатор сеанса: f228cc09-2dd5-4658-9950- c504bf007b7f Информация о драйвере: org.openqa.selenium.firefox.FirefoxDriver Возможности [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox, handlesAlerts=true, browserConnectionEnabled=true, webStorageEnabled= true, nativeEvents=false, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takeScreenshot=true, version=30.0}] at sun.reflect.GeneratedConstructorAccessor13.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ) в java.lang.reflect.Constructor.newInstance(неизвестный источник) в org .openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193) в org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) в org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver .java:595) в org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348) в org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:445

Как я могу устранить эту ошибку или что означает эта ошибка?


person Harsh Sehgal    schedule 12.06.2014    source источник
comment
Опубликуйте код, пожалуйста   -  person Furious Duck    schedule 12.06.2014
comment
Где соответствующий код? Что в строке с ошибкой? Вы пробовали отлаживать?   -  person RossC    schedule 12.06.2014
comment
Да, я пробовал отлаживать с помощью блока try -catch, где я ловил исключение и снова выполнял то же действие... но результаты те же.   -  person Harsh Sehgal    schedule 12.06.2014
comment
Не могли бы вы объяснить, что означает это исключение... т.е. что здесь означает b???   -  person Harsh Sehgal    schedule 12.06.2014
comment
Я не вижу driver.get(url) в коде, который вы разместили   -  person Sighil    schedule 12.06.2014
comment
Это полная трассировка стека?   -  person Abhishek_Mishra    schedule 12.06.2014
comment
Вы пытались использовать Thread.sleep, прежде чем искать текстовое поле?   -  person elcharrua    schedule 12.06.2014


Ответы (1)


У меня была такая же ошибка при попытке щелкнуть элемент моей веб-страницы. Я также пытался использовать координаты, но была та же ошибка. (ошибка JavaScript b равна нулю)

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

До:

By myBy= By.xpath("//img[contains(@title,'title')]");
driver.findElement(myBy).click();

После:

driver.navigate().refresh();
By myBy= By.xpath("//img[contains(@title,'title')]");
driver.findElement(myBy).click();

Возможно, стоит попробовать обновить страницу (driver.navigate().refresh();) перед попыткой доступа к элементу.

person Delfalso    schedule 11.09.2018