gpt4 book ai didi

javascript - 填写网站数据并单击按钮并解析响应

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:49 24 4
gpt4 key购买 nike

我想让用户输入车辆号码,然后读取数据并向用户显示车辆详细信息。我不想在 WebView 中这样做。我可以使用此代码填充数据:

webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://parivahan.gov.in/rcdlstatus/vahan/rcstatus.xhtml");
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
String reg1="KA51X";
String reg2="2442";
if(isFirstLoad) {
webView.loadUrl("javascript: {" +
"document.getElementById('convVeh_Form:tf_reg_no1').value = '" + reg1 + "';" +
"document.getElementById('convVeh_Form:tf_reg_no2').value = '" + reg2 + "';" +
"var frms = document.getElementsByName('convVeh_Form');" +
"frms[0].submit(); };");

isFirstLoad = false;
}
}
});

这是显示此应用程序数据的网站。

https://parivahan.gov.in/rcdlstatus/vahan/rcstatus.xhtml

现在我尝试使用这一行点击提交按钮

 "frms[0].submit(); };");

还有这个,

"javascript:(function(){document.getElementById('convVeh_Form:j_idt21').click();})()"

但是他们不工作。如何点击Id为

的按钮

convVeh_Form:j_idt21

另外,一旦能够点击按钮,响应将来自网站。如何读取该响应文本并将其放入应用程序的 TextView 中?

最佳答案

您遇到了一个单独的问题,convVeh_Form:j_idt21 只是一个标签(在撰写本文时)。你想要 convVeh_Form:j_idt27。也许他们变了?

您可能希望将注入(inject)的 javascript 和选择器设置为 document.querySelector('[id="convVeh_Form:j_idt27"]').click()

这绕过了 : 作为 css 选择器目的的特殊字符。

webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://parivahan.gov.in/rcdlstatus/vahan/rcstatus.xhtml");
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
String reg1 = "KA51X";
String reg2 = "2442";
if (isFirstLoad) {
webView.loadUrl("javascript: {" +
"document.getElementById('convVeh_Form:tf_reg_no1').value = '" + reg1 + "';" +
"document.getElementById('convVeh_Form:tf_reg_no2').value = '" + reg2 + "';" +
"document.querySelector('[id=\"convVeh_Form:j_idt27\"]').click(); };");

isFirstLoad = false;
}
}
});

您也可以使用 button[type="submit"] 作为选择器,如果您知道它将始终是第一个按钮,这样 ID 就不再重要了。 (也许他们会再次改变?)
其他字段将是 document.querySelectorAll('input[type="text"]')[0][1].

提交表单后,导航将发生变化。这会触发一个事件,您可以通过子类化 WebView 来 Hook 。参见 this answer以另一个问题为例。

private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// ...
}
}

将其用作您的事件,检测端点处的 URL,然后注入(inject)一些新的 javascript 以从页面中提取信息。如果您需要更多帮助,请告诉我。

关于javascript - 填写网站数据并单击按钮并解析响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39701747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com