首页 > 编程语言 >C#使用webview2摸拟网页提交的一些记录

C#使用webview2摸拟网页提交的一些记录

时间:2023-06-08 10:14:37浏览次数:57  
标签:sheet name C# webview2 摸拟 querySelector 网页 div document

想要在C#使用中webview2,最好使用VS2019及以上版本,最低支持.net 4.5版本,所以在win7系统上就可以进行开发了

ReoGrid是一个类Excel的控件,非常好用,两者搭在一起,可以实现一些自动化的输入工作,非常的方便,Excel的内容可以直接粘贴到这个控件里面

 

下面说说使用过程中遇到的问题:

1、安装webview2后,在vs工具箱中找不到webview2

这个有可能是安装的版本太高不显示,也有可能是电脑性能慢还没有在工具箱中显示出来,我试着换了一个低一些的版本,然后过了好一会,才在工具箱中搜索到

2、运行时webview2不显示网页内容

这是因为没有安装webview2的运行时,可以在nuget中搜索直接安装,感觉那个有100M+,安装好以后就可以正常显示网页了,win7、win10都需要安装运行时,只有win11是系统自带的

3、C#中通过代码操作网页,给网页中的表单赋值

这个是通过document.querySelector来定位网页中的元素的,对于网页中的元素,不要想的那么复杂, 其实就是赋值和点击鼠标,如果不想思考就直接使用js路径,如下图

 

 如果你觉得这个太长写起来不方便,那么可以使用name、class等方式来查找,具体搜一下就知道了,下面一个是使用的name查找,一个是直接复制的js路径

web_view.ExecuteScriptAsync($"document.querySelector('[name=phone]').dispatchEvent(new Event('input'))");
web_view.ExecuteScriptAsync($"document.querySelector('#app > div > div.bgbox > div > div.van-row > div > div:nth-child(1) > form > div:nth-child(4) > div > div > div > div > div > div').click()");

 

4、给网页中的input文本框赋值后,点击进去时值却消失的问题,也就是说你看到文本框中有值,但网页认为没有,也无法通过前端的js检查

这个问题困惑了我半下午时间,后来在网上找到了解决的办法,就是给它手动增加一个事件就可以了,如下

 web_view.ExecuteScriptAsync($"document.querySelector('[name=name]').value='" + name + "';");
 web_view.ExecuteScriptAsync($"document.querySelector('[name=name]').dispatchEvent(new Event('input'))");  //可防止点击编辑后空值

 

5、对于使用div来实现复选框怎么选中的问题

有些网页上给div使用了role属性,设置为radio,它就表现为一个复选框,刚开始以为只要把checked设置为true就能让它选中了,试了好几次都发现无法选中,后来发现是思路有问题,设置它属性干啥呀,直接模拟鼠标点一下不就行了吗,好在有个唯一的name值,直接通过查找name后进行点击

web_view.ExecuteScriptAsync($"document.querySelector('[name=seriesName]').click()");
System.Threading.Thread.Sleep(1000);

6、对于下拉列表框的选择

下拉列表框中的选项其他都一样,只有内容不一样,这种的怎么选择它了,当然还是点击了,只是你要知道点击第几个选项,通过复制js路径来查找元素,在c#代码中判断好需要点击第几个选项,然后让它点去,中间休眠上不到1秒,好让网页有个反应的时间,不然选项没弹出来,你点了也没用,选中后再点击确认按钮。

web_view.ExecuteScriptAsync($"document.querySelector('#app > div > div:nth-child(2) > div.van-popup.van-popup--bottom > div > div.van-picker__columns > div.van-picker-column > ul > li:nth-child("+carnum+")').click();");
System.Threading.Thread.Sleep(600);
web_view.ExecuteScriptAsync($"document.querySelector('[class=van-picker__confirm]').click()");

7、关于ReoGrid的一些操作

       var sheet = Reo_excel.CurrentWorksheet;
            sheet.Resize(200, 3);   //设置表格的行数和列数,默认是200行
            sheet.SetColumnsWidth(0, 1, 80);  //设置列的宽度
            sheet.SetColumnsWidth(1, 2, 100);
            sheet.SetColumnsWidth(2, 3, 160);
            sheet[0, 0] = "姓名";   //设置第一行中的内容
            sheet[0, 1] = "手机号码";
            sheet[0, 2] = "车型";
//读取reogrid中的内容,如果读到空的单元格会异常,我这里是读到空时就认为是最后一条记录了,可以自己根据实际需求处理
var sheet = Reo_excel.CurrentWorksheet;
num += 1; if (sheet[num, 0] is null) { MessageBox.Show("已经是最后一行了!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } name = sheet[num, 0].ToString();

 

标签:sheet,name,C#,webview2,摸拟,querySelector,网页,div,document
From: https://www.cnblogs.com/wjbych/p/17465367.html

相关文章

  • Docker(五):部署Tomcat
    1.查找tomcatdockersearchtomcat[root@VM-8-4-centos~]#dockersearchtomcatNAMEDESCRIPTIONSTARSOFFICIALAUTOMATEDtomcatApacheTomcatisanopen......
  • .CSS.MAP文件作用
    .CSS.MAP文件作用https://blog.csdn.net/qq_36441169/article/details/1025755631、简介在写前端代码,使用bootstrap时,发现同一个目录下,不仅仅有.css文件的同时,还存在.css.map文件的存在。在前端页面调试时也发现,映入很多已.less结尾的文件。将bootstrap-theme.min.css.map文件......
  • 200SMART CPU输入/输出接线的几个关键点
    总结来看,S7-200系列PLC提供4个不同的基本型号的8种CPU,其接线方式也可大致分为6种:1.CPUSR20接线2.CPUSR40接线3.CPUCR40接线4.CPUST40接线5.CPUSR60接线6.CPUST60接线除了CPU外,我们还需要了解200smartPLC的数字量输入/输出接线。1.数字量输入接线S7-200SMART的数字量输入......
  • docker搭建hadoop和hive集群
    一、安装docker并生成相关的镜像(1)安装docker安装docker教程https://www.runoob.com/docker/centos-docker-install.html只要在终端输入:sudodockerrunhello-world后出现如下图的内容就证明安装docker成功了(2)拉取CentOS镜像(Ubuntu镜像也行)在终端输入:sudodockerpullcent......
  • 深入了解 Cookie、Session 和 PHP 在 Web 开发中的用户身份验证和会话管理
    在Web开发中,用户身份验证和会话管理是至关重要的方面。本文将探讨Cookie和Session的概念及其在用户身份验证和会话管理中的作用。我们还将介绍一些关于会话安全性和保护的最佳实践,并讨论PHP在Web开发中的角色。1.什么是Cookie和Session?1.1CookieCookie是服务器发送......
  • Redis Cluster集群搭建
    rediscluster架构一个RedisCluster由多个Redis节点构成,不同节点组服务的数据没有交集,也就是每个一节点组对应数据sharding的一个分片.节点组内部分为主备两类节点,对应master和slave节点.两者数据实时一致,通过异步化的主备复制机制来保证.一个节点组有且只有一个......
  • centos7 部署 Mysql 5.7
    (centos7部署Mysql5.7)一、安装2.1环境准备1、查看系统自带或之前安装的mariadb。rpm-qa|grepmariadb2、卸载它们rpm-e--nodepsmariadb-libs-5.5.60-1.el7_5.x86_643、再看一下之前有没有安装过mysqlrpm-qa|grepmysql如果没有这里不会有任何的返回,如......
  • 瓴羊Quick BI报表分析工具,大幅提升企业经营效率
    随着ChatGPT等大模型软件的迅速崛起,在工作中使用智能工具提高效率、节省人力成了许多企业共同的选择。从目前的应用场景看,ChatGPT等软件大多是基于自然语言处理技术的生成式人工智能模型,更善于处理文字、图片类的工作,对于企业经营过程中海量业务数据的处理,更依靠瓴羊QuickBI报表分......
  • centos设置python计划任务
    前言提示:很久很久以前用python写了一个网站自动签到的脚本,需要一台服务器每天自动去帮我签到(赚一点微薄的网站积分,嘤嘤嘤),一直挂在朋友服务器上,现在他的快过期了(同是天涯穷苦人),前几天斥巨资(96rmb)买了一个阿里云的应用服务器一年(刚好有个阿里云域名),把我的python脚本弄过来吧~1、升级c......
  • 谈一谈冷门的C语言爬虫
    C语言可以用来编写爬虫程序,但是相对于其他编程语言,C语言的爬虫开发可能会更加复杂和繁琐。因为C语言本身并没有提供现成的爬虫框架和库,需要自己编写网络请求、HTML解析等功能。不过,如果你对C语言比较熟悉,也可以尝试使用C语言编写爬虫程序,这样可以更好地掌握爬虫的底层原理和实现方......