1

在使用 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 为空

命令持续时间或超时: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 驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver Capabilities [{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}] 在 sun.reflect。GeneratedConstructorAccessor13.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java: 193) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595) 在 org.openqa.selenium.remote.RemoteWebDriver 在 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) .findElement(RemoteWebDriver.java:348) 在 org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:445newInstance(Unknown Source) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) at org.openqa.selenium。 remote.RemoteWebDriver.execute(RemoteWebDriver.java:595) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348) at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:445)newInstance(Unknown Source) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) at org.openqa.selenium。 remote.RemoteWebDriver.execute(RemoteWebDriver.java:595) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348) at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:445)selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:445selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:445

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

4

1 回答 1

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(); )。

于 2018-09-11T11:43:03.753 回答