使用JavascriptExecutor测试按钮时遇“Unexpected keyword or identifier”错误求助
问题解决思路
1. 第一行代码的语法错误原因
你写的JavascriptExector js = (JavascriptExector) driver;是Java语言的Selenium语法,但当前使用的是JavaScript,两者语法规则完全不同:
- JavaScript不支持静态类型声明(比如
变量类型 变量名 = ...这种写法在JS里不合法) - 不需要对
driver做强制类型转换 - 类名拼写错误:正确的类名是
JavascriptExecutor(你少写了一个字母u)
在JavaScript的Selenium环境中,driver实例本身就支持执行JS脚本,不需要单独创建JavascriptExecutor对象。
2. 导入语句的错误原因
import org.openqa.selenium.JavascriptExecutor;是Java的导入语法,JavaScript的模块导入规则完全不同:
- 如果用Node.js的CommonJS规范,导入Selenium的写法是:
const { Builder, By, until } = require('selenium-webdriver'); - 如果用ES模块规范(需要在项目的
package.json中设置"type": "module"),写法是:import { Builder, By, until } from 'selenium-webdriver';
而且JavaScript的Selenium不需要单独导入JavascriptExecutor,因为driver自带executeScript()方法。
正确示例代码
// CommonJS导入方式 const { Builder } = require('selenium-webdriver'); async function executeJs() { // 初始化浏览器驱动 const driver = await new Builder().forBrowser('chrome').build(); try { await driver.get('https://example.com'); // 直接执行JavaScript脚本 const pageTitle = await driver.executeScript('return document.title;'); console.log('页面标题:', pageTitle); } finally { // 关闭浏览器 await driver.quit(); } } // 执行函数 executeJs();
内容的提问来源于stack exchange,提问作者Hadi Mazboudi
相关产品推荐
相关产品推荐

