Appium+Java+Cucumber框架调用JavascriptExecutor报jse为null空指针异常
异常根因
该空指针异常的核心诱因是SignUp类中声明的driver变量从未被初始化,始终为null:
- 你在
SignUp类中单独定义了public AppiumDriver<MobileElement> driver;变量,但构造函数仅完成了baseSetUp的赋值,没有给当前类的driver做任何初始化操作。执行JavascriptExecutor jse = (JavascriptExecutor) driver;代码时,调用的是这个未赋值的空driver,强转后得到的jse自然为null,调用方法就会抛出空指针。 - 额外排查点:你编写的JS执行语句也存在语法错误,无法完成给禁用输入框赋值的需求。
修复方案
1. 修复空指针问题
二选一即可:
- 直接从已初始化的baseSetUp中取driver:将
JavascriptExecutor jse = (JavascriptExecutor) driver;替换为JavascriptExecutor jse = (JavascriptExecutor) baseSetUp.getDriver(); - 在
SignUp类构造函数中补充赋值:在构造函数内增加一行this.driver = baseSetUp.getDriver();
2. 修复日期赋值逻辑
因为输入框是禁用状态,需要先移除禁用属性再赋值,修正后的代码如下:
// 先移除输入框的disabled属性 jse.executeScript("arguments[0].removeAttribute('disabled');", element); // 给输入框赋值正确日期 jse.executeScript("arguments[0].value = '" + date + "';", element);
内容的提问来源于stack exchange,提问作者Asanga Korala
相关产品推荐
相关产品推荐

