【问题标题】:Selenium WD NullPointerException while executing simple JS codeSelenium WD NullPointerException 在执行简单的 JS 代码时
【发布时间】:2013-09-26 22:20:02
【问题描述】:

花了 1 天时间寻找以下问题的解决方案:

使用 selenium WD 甚至无法执行简单的 js 代码。它总是返回 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 当然是预定义的。

谢谢!

【问题讨论】:

  • 你有没有初始化过driver2实例?
  • 同意@Smit 的观点:给出的示例代码没有为driver2 赋值,在这种情况下js 也没有值。您的编译器应该抱怨您使用的值不是“明确分配的”。
  • 我编辑了原帖。不幸的是,这件事没有帮助:(

标签: java javascript selenium selenium-webdriver


【解决方案1】:

正如@Smit 所说,以及您的NullPointerException

您从未真正初始化您的 WebDriver 对象,并且您正在尝试将一个空对象强制转换为 JavaScriptExecutor。

根据您要使用的浏览器类型,您可以做到..

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

另外,您为什么要尝试使用 2 个驱动程序对象?您应该只有 1. 将您的对象命名为 driver

【讨论】:

  • 我编辑了原帖。不幸的是,这件事没有帮助:(
【解决方案2】:

变了

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

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

不知道为什么,但它现在可以工作了!非常感谢!

【讨论】:

    猜你喜欢
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多