Selenium - org.openqa.selenium.WebDriverException:b为null

时间:2014-06-12 09:27:19

标签: java selenium selenium-webdriver remotewebdriver

在使用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'专家ID:f228cc09-2dd5-4658-9950-c504bf007b7f驱动程序   info: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,rotate = false,   locationContextEnabled = true,applicationCacheEnabled = true,   takeScreenshot = true,version = 30.0}] at   sun.reflect.GeneratedConstructorAccessor13.newInstance(Unknown Source)     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown   来自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

如何解决此错误或此错误表示/意味着什么?

1 个答案:

答案 0 :(得分:0)

尝试单击网页的某个元素时出现相同的错误。 我也尝试使用坐标,但是有相同的错误。 (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(); )。