You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HtmlUnit-Android包中JavaScriptExecutor无executeScript方法的解决求助

解决HtmlUnit3-Android中无法调用executeScript的问题

问题根源

你导入的org.htmlunit.javascript.background.JavaScriptExecutor是HtmlUnit中用于后台JavaScript任务管理的类,根本不是用来执行自定义脚本的,所以找不到executeScript方法是必然的。

可行解决方案

方案1:直接调用按钮的原生click方法(推荐)

HtmlUnit的HtmlButton本身就提供了click()方法,完全不需要通过JavaScript执行,代码更简洁可靠:

import org.htmlunit.WebClient
import org.htmlunit.html.HtmlButton
import org.htmlunit.html.HtmlPage

private lateinit var mainScreen : HtmlPage

val webClient = WebClient()
val mainPage = webClient.getPage(anyURL) as HtmlPage
        
val buttonsList = mainPage.getElementsByTagName("button") as List<HtmlButton>
for (targetButton in buttonsList) {
    if (targetButton.textContent == "Continue") {
        targetButton.click() // 直接调用原生click方法
    }
}

方案2:使用HtmlPage或WebClient执行JavaScript脚本

如果确实需要通过JS触发操作,HtmlUnit3中正确的方式是用HtmlPage的executeJavaScript方法,或者WebClient的相关方法,不需要转换到错误的JavaScriptExecutor类:

// 用HtmlPage执行脚本
for (targetButton in buttonsList) {
    if (targetButton.textContent == "Continue") {
        mainPage.executeJavaScript("arguments[0].click();", targetButton)
    }
}

// 或者用WebClient执行(需要指定页面窗口)
val window = mainPage.enclosingWindow
webClient.executeJavaScript("arguments[0].click();", window, targetButton)

方案3:确认HtmlUnit3-Android的API兼容性

HtmlUnit3-Android是专门适配Android的版本,部分API可能和标准HtmlUnit有差异,确保你使用的方法在Android版本中存在:

  • 避免使用仅桌面版支持的类/方法
  • 查阅依赖包自带的API文档确认可用方法

内容的提问来源于stack exchange,提问作者Richard Hammond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 12:12:19