PREENCHER CAMPO SITE COM WEBVIEW2
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?
WB.Document.GetElementById("username").InnerText = "Texto";
Porém, e com o WebView2 como faç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 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);
string cValor = "document.getElementById("username").value = "texto"";
await webView.CoreWebView2.ExecuteScriptAsync(cValor);
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";})()");
}
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.
O id do campo é mesmo "username"?
Olá, sim. Veja o site https://www.estantevirtual.com.br/login onde quero implementar a entrada para facilitar para meu cliente.
O id é "username_or_email"
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")");
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")");
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.
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.
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")");
await webView.CoreWebView2.ExecuteScriptAsync("document.getElementsByName("alvo")[0].SetAttribute("value", "descr")");
Tópico encerrado , respostas não são mais permitidas