Selenium Java中executeScript滚动报null无法创建对象错误
问题描述
- 为实现页面某区域滚动,编写代码如下:
JavaScriptExecutor js= (JavaScriptExecutor) driver; js.executeScript (scroll code);
- 但IDE自动提示的
executeScript方法签名为js.executeScript(null,args),运行时报错null cannot create object - 实际滚动代码在浏览器控制台可正常执行,预期该方法签名应为
js.executeScript(arg0,arg1);
解决方法
- 修正参数传递错误:
IDE提示里的null是占位符,你必须把实际的滚动JS代码字符串作为第一个参数传入,不能留空。报错null cannot create object就是因为第一个参数传了null,没有有效的脚本可执行。 - 正确调用示例:
如果是滚动到指定元素:
如果是自定义区域滚动(比如控制台能运行的代码):WebElement targetElement = driver.findElement(By.id("需要滚动到的元素ID")); JavaScriptExecutor js = (JavaScriptExecutor) driver; js.executeScript("arguments[0].scrollIntoView(true);", targetElement);JavaScriptExecutor js = (JavaScriptExecutor) driver; // 这里替换成你在控制台能用的滚动代码 js.executeScript("document.querySelector('.scroll-area').scrollTop = 300;"); - 关于方法签名的说明:
executeScript的正确重载是executeScript(String script, Object... args),第一个参数是要执行的JS脚本字符串,第二个是可选的脚本参数(给JS传递变量用)。IDE显示的null,args只是占位提示,并非实际要求传null,更新Selenium依赖或重启IDE可解决提示异常问题。
内容的提问来源于stack exchange,提问作者Sherin
相关产品推荐
相关产品推荐

