前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >win10 uwp 模拟网页输入 使用 cookie

win10 uwp 模拟网页输入 使用 cookie

作者头像
林德熙
发布2018-09-18 16:56:38
8800
发布2018-09-18 16:56:38
举报
文章被收录于专栏:林德熙的博客林德熙的博客

有时候需要获得网页的 js 执行后的源代码,或者模拟网页输入,如点按钮输入文字。

如果需要实现,那么就需要用 WebView ,使用方法很简单。

首先创建一个 WebView ,接下来的所有输入都需要在 NavigationCompleted 之后才可以使用。

所以我就在构造方法使用下面代码

代码语言:javascript
复制
    webView.Navigate(new Uri("https://www.bing.com/"));
    webView.NavigationCompleted += webView_NavigationCompletedAsync;

在模拟输入之前,如果需要在 UWP 使用 Webview 获取网页源代码,那么需要在 加载完成的函数 使用下面的代码来 获得加载完成网页的源代码。

代码语言:javascript
复制
private async void webView_NavigationCompletedAsync(WebView sender, WebViewNavigationCompletedEventArgs args)
{
    str = await webView.InvokeScriptAsync("eval", new string[] { "document.documentElement.outerHTML;" });
}

用到的方法就是 webView.InvokeScriptAsync 使用 js 代码。

如果需要在指定的文本框输入文字,可以使用下面代码

代码语言:javascript
复制
private async void EnterTextAsync(string text,string enterText)
{
    var functionString = string.Format(@"document.getElementsByClassName('{0}')[0].innerText = '{1}';",text, enterText);
    await webView.InvokeScriptAsync("eval", new string[] { functionString });
}

看起来这些都是 js 的知识,难度不高。

点击按钮可以使用下面代码

代码语言:javascript
复制
private async void SimulateClickAsync(string button)
{
    var functionString = string.Format(@"document.getElementsByClassName('{0}')[0].click();",button);
    await webView.InvokeScriptAsync("eval", new string[] { functionString });
}

如果需要填写表单 form 那么前面使用的innerText需要修改为value,建议打开 edge 在控制命令输入,尝试一个正确的输入

更多的请去了解 js 的知识

UWP webView 模拟登陆 csdn

下面给大家一个叫简单方法模拟登陆csdn

代码语言:javascript
复制
          GeekWebView.Navigate(new Uri("http://passport.csdn.net/"));

            GeekWebView.NavigationCompleted += OnNavigationCompleted;


            F = async () =>
            {

                var functionString = string.Format(@"document.getElementsByName('username')[0].value='{0}';", "lindexi_gd@163.com");
                await GeekWebView.InvokeScriptAsync("eval", new string[] { functionString });
                functionString = string.Format(@"document.getElementsByName('password')[0].value='{0}';", "密码");
                await GeekWebView.InvokeScriptAsync("eval", new string[] { functionString });

                functionString = string.Format(@"document.getElementsByClassName('logging')[0].click();");
                await GeekWebView.InvokeScriptAsync("eval", new string[] { functionString });
            };

        private Action F { set; get; }

        private void OnNavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
        {
            F();
        }

使用 cookie

如果需要使用 cookie 那么请加上下面的代码

代码语言:javascript
复制
            Windows.Web.[Http.Filters.HttpBaseProtocolFilter](Http.Filters.HttpBaseProtocolFilter ) filter = new Windows.Web.[Http.Filters.HttpBaseProtocolFilter();](Http.Filters.HttpBaseProtocolFilter(); )

只要写上这句话就好了

参见:https://stackoverflow.com/questions/44685469/programatically-press-a-button-in-a-website-from-an-app-in-a-phone/44692971


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • UWP webView 模拟登陆 csdn
  • 使用 cookie
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档