通过WebView程序化搜索谷歌-Flutter/DART



我正在使用Flutter构建一个应用程序来搜索我(这样我就不必这么做了(。我想让它搜索"一辆公共汽车能装多少个高尔夫球"。我有一个WebView,想在加载谷歌登录页时将文本添加到搜索框中。我该怎么做呢?

到目前为止,我所拥有的似乎没有任何作用——它没有在搜索框中输入详细信息。(当我测试它时,我似乎看不到任何反馈、错误或警报(。

Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(this.widget.title),
),
body: WebView(
initialUrl: this.widget.url,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller = webViewController;
},
onPageFinished: (String s) {
setState(() {
_controller.evaluateJavascript("window.addEventListener('load', function () {document.getElementsByTagName('q')[0].value += 'How many golf balls fit in a bus'})");
_controller.evaluateJavascript("window.addEventListener('load', function () {document.getElementsByTagName('btnK')[0].click})");
},
),
);
}
}

我已经看了这个:在webview 中加载的html元素上自动点击

任何帮助都将不胜感激。谢谢

您使用了错误的getElementsByTagName方法,必须使用getElementsByName

你可以自己尝试,打开浏览器,打开inspect元素,然后控制台选项卡和过去的document.getElementsByTagName('q')[0].value += 'How many golf balls fit in a bus',什么都不会发生,你也可以检查getElementsByTagName的结果,你可以注意到它是一个空数组。

最新更新