Java Selenium如何通过JavascriptExecutor获取JS返回值或提取script标签内容
Selenium通过JavascriptExecutor获取script标签内容的Java实现方案
核心注意点:要把JS执行结果返回给Java,必须在JS语句开头添加return关键字,你之前写的$(".payload-script").text();没有返回声明,直接执行拿不到结果。
- 第一步:导入依赖包
你需要提前导入Selenium的相关类:import org.openqa.selenium.WebDriver; import org.openqa.selenium.JavascriptExecutor; // 如果后续需要解析JSON可以导入对应的序列化工具,比如Gson import com.google.gson.Gson; - 第二步:实例化JavascriptExecutor并执行脚本
基于你的jQuery写法,代码如下:// 假设driver是你已经初始化完成的WebDriver实例,已经打开了目标页面 JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; // 执行JS,添加return把结果返回,强转为String类型接收 String payloadText = (String) jsExecutor.executeScript("return $(\".payload-script\").text();"); - 第三步:无jQuery兼容方案(推荐)
若目标页面没有引入jQuery,$选择器会失效,推荐用原生JS实现,兼容性更强:String payloadText = (String) jsExecutor.executeScript("return document.querySelector('.payload-script').textContent;");
拿到payloadText之后就可以直接在Java代码里做后续处理,如果标签内是JSON格式的内容,可以直接用Gson/Jackson等工具反序列化为Java对象使用。
内容的提问来源于stack exchange,提问作者Krunal Thakkar
相关产品推荐
相关产品推荐

