PREENCHER CAMPO SITE COM WEBVIEW2

ATSILVA 20/08/2022 09:56:52
#500338
Para preencher campo em site com WebBrowser no C# uso:

WB.Document.GetElementById("username").InnerText = "Texto";

Porém, e com o WebView2 como faço?
KERPLUNK 20/08/2022 11:48:23
#500339
Resposta escolhida
Algo como:

WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl("SUA_URL_AQUI");
wb.getSettings().setJavaScriptEnabled(true);

wb.setWebViewClient(new WebViewClient() {

@Override
public void onPageFinished(WebView web, String url) {
view.loadUrl("javascript:(function(){document.getElementById("username").value = "texto";})()");

}
});
ATSILVA 20/08/2022 13:22:42
#500341
Não funcionou, tentei da forma abaixo e também não funcinou, não preenche o campo:


string cValor = "document.getElementById("username").value = "texto"";
await webView.CoreWebView2.ExecuteScriptAsync(cValor);
KERPLUNK 20/08/2022 13:29:44
#500342
Voce precisa especificar "javascript" no começo, bem como coloquei.

@Override
public void onPageFinished(WebView web, String url) {
string cValor = "algo aqui";
view.loadUrl("javascript:(function(){document.getElementById("" + valor + "").value = "texto";})()");

}
ATSILVA 20/08/2022 13:51:59
#500343
Citação:

:
Algo como:


WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl("SUA_URL_AQUI");
wb.getSettings().setJavaScriptEnabled(true);

wb.setWebViewClient(new WebViewClient() {

@Override
public void onPageFinished(WebView web, String url) {
view.loadUrl("javascript:(function(){document.getElementById("username").value = "texto";})()");

}
});





Não aparece nada no campo dentro do site.
Precisa declarar algum namespace (using)?

PS: Já tenho o controle WebView2 incluído no form.
KERPLUNK 20/08/2022 17:31:00
#500344
O id do campo é mesmo "username"?
ATSILVA 21/08/2022 14:58:25
#500345
Olá, sim. Veja o site https://www.estantevirtual.com.br/login onde quero implementar a entrada para facilitar para meu cliente.
KERPLUNK 21/08/2022 15:14:27
#500346
O id é "username_or_email"
ATSILVA 21/08/2022 18:15:46
#500347
Muito obrigado, deu certo, com o código abaixo:

await webView.CoreWebView2.ExecuteScriptAsync("document.getElementById("username_or_email").value = "Texto"");

Não querendo abusar dos amigos do fórum, e para preencher uma COMBOBOX?
Estou utilizando o comando abaixo, porém, não preenche:

await webView.CoreWebView2.ExecuteScriptAsync("document.getElementsByName("alvo").SetAttribute("value", "descr")");
KERPLUNK 21/08/2022 20:33:58
#500348
O método GetElementsByName, não retorna um elemento apenas, mas sim um array, ainda que de um item só. "Name" não precisa ser exclusivo no DOM.
Então seria algo como:
await webView.CoreWebView2.ExecuteScriptAsync("document.getElementsByName("alvo")[0].SetAttribute("value", "descr")");

Se voce quer começar a fazer esse tipo de coisa com mais frequencia, sugiro que estude um pouco mais a fundo como funciona Javascript.
ATSILVA 22/08/2022 10:02:34
#500350
Olá, ja tentei da forma abaixo também, porém, não preenche o combobox.

await webView.CoreWebView2.ExecuteScriptAsync("document.getElementsByName("alvo")[0].SetAttribute("value", "descr")");
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas