Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共3 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[杰哥的免费分享] 狐表自动打开网页并填入账号密码(仅适用IE浏览器)

1楼
chen37280600 发表于:2025/4/20 20:06:00

(快速浏览杰哥分享过的所有经验汇总,点击跳转


前言:之前论坛也有一些帖子,不过基本是基于JQuery年代的,有些方法已经不再适应现在的Vue/React之类的异步加载网站,所以我整合并做了优化改进。
虽然IE浏览器已经有些过时,不过刚好遇到有狐友需要,顺便做得整合。

1需求
自动打开网页,点击登录按钮,到了登录窗口,输入账号密码
(由于狐表.net版本的限制,只能调用IE浏览器,无法控制第三方Chrome浏览器)


此主题相关图片如下:1.png
按此在新窗口浏览图片


此主题相关图片如下:2.png
按此在新窗口浏览图片

2实现代码
1)全局代码

以下内容只有回复后才可以浏览

2)业务代码

'1关闭所有相关的IE浏览器,免得重复出错
Dim shell As Object = CreateObject("Shell.Application")
Dim win As Object
For Each win In shell.Windows
    If InStr(win.FullName, "iexplore.exe") > 0 Then
        If InStr(win.LocationURL, "etax.zhejiang.chinatax.gov.cn") > 0 Then '这里改成你的业务域名,不需要http
            win.Quit
            Exit For
        End If
    End If
Next

'2初始化新的IE浏览器
Dim ie As Object = CreateObject("InternetExplorer.Application")
ie.Visible = True

'3先登录首页
ie.Navigate("https://etax.zhejiang.chinatax.gov.cn:8443/") '这里改成你的业务网址
Sleep(4000) '由于这是个Vue异步加载的页面,要给时间它异步加载(如果网络差,建议延长)

'4点击登录按钮,跳转到登录窗口
Dim Spans = ie.Document.GetElementsByTagName("span")
For Each Span As Object In Spans
    If Span.GetAttribute("class").ToString = "loginBtnText" Then
        Span.Click 
    End If 
Next 
Sleep(4000) '等异步加载

'5找到账号密码,并输入
Dim Inputs = ie.Document.GetElementsByTagName("input")
For Each Input As Object In Inputs
    Select Case Input.GetAttribute("placeholder").ToString 
        Case "统一社会信用代码/纳税人识别号"
            input.Focus()
            Sleep(300) ' 延迟让focus生效
            SendKeys.SendWait("914400007578948436")
        Case "居民身份证号码/手机号码/用户名"
            input.Focus()
            Sleep(300) ' 延迟让focus生效
            SendKeys.SendWait("13427100453")
        Case "个人用户密码"
            input.Focus()
            Sleep(300) ' 延迟让focus生效
            SendKeys.SendWait("123")
    End Select 
Next


此主题相关图片如下:3.png
按此在新窗口浏览图片

3关键技术点
1)先关闭相关浏览器
重复打开IE浏览器,会导致获取元素异常(例如报错`RPC 服务器不可用。 (异常来自 HRESULT:0x800706BA)`),
所以要先关闭好

'1关闭所有相关的IE浏览器,免得重复出错
Dim shell As Object = CreateObject("Shell.Application")
Dim win As Object
For Each win In shell.Windows
    If InStr(win.FullName, "iexplore.exe") > 0 Then
        If InStr(win.LocationURL, "tpass.zhejiang.chinatax.gov.cn") > 0 Then '这里改成你的业务域名,不需要http
            win.Quit
            Exit For
        End If
    End If
Next


2)异步加载
这是个主流的Vue页面,采用异步加载。所以我们要适当等待,等待元素加载出来,而**不能单纯通过以下代码**,判断浏览器就绪,否则容易获取不到元素而报错
Do While ie.busy Or ie.readystate <> 4
    Application.DoEvents
Loop

3)定位元素
利用Dim Inputs = ie.Document.GetElementsByTagName("input")找到某种元素的集合,例如这里找到所有的input标签元素。
然后我们去看下要定位的元素,有什么特征。在浏览器按F12,进入网页元素控制台

此主题相关图片如下:4.png
按此在新窗口浏览图片

4)模拟点击
找到元素后,可以模拟点击
Dim Spans = ie.Document.GetElementsByTagName("span")
For Each Span As Object In Spans
    If Span.GetAttribute("class").ToString = "loginBtnText" Then
        Span.Click 
    End If 
Next 

5)模拟输入
找到元素后,可以模拟键盘输入
Dim Inputs = ie.Document.GetElementsByTagName("input")
For Each Input As Object In Inputs
    Select Case Input.GetAttribute("placeholder").ToString 
        Case "统一社会信用代码/纳税人识别号"
            input.Focus()
            Sleep(300) ' 延迟让focus生效
            SendKeys.SendWait("914400007578948436")
    End Select 
Next


注意:Vue/React 前端动态框架阻止了直接 DOM 注入生效的现象,所以狐表论坛里,以下传统的写法是失效的
'这种是失效的
Dim inputs = ie.Document.GetElementsByTagName("input")
For Each input As Object In inputs
    If input.getAttribute("placeholder") = "个人用户密码" Then
        input.setAttribute("value", 123) 
    End If
Next


此主题相关图片如下:5.png
按此在新窗口浏览图片

=====================================================================
杰哥免费分享的web系统

[杰哥的免费分享]A1迷你库存管理系统,网页版的纯库存管理,实现简单的多人协助出入库,库存统计,权限管理

[杰哥的免费分享]A2迷你产品报价系统,网页版的带图Excel报价单快速生成工具,外贸企业特别常用

[杰哥的免费分享]OA行政管理系统,网页版的OA审批工作流,开放式流程,包含固定资产管理、文具申领库存、报销申请、用印盖章申请、请假申请等常见行政模块

[杰哥的免费分享]造价项目资料和提成管理系统,应用于造价行业,把过程资料归档,设置每个项目的成员提成,一键统计绩效

[杰哥的免费分享]迷你知识库系统,KindEditor富文本框的实战效果,绿色免安装、免管理员权限、免http服务、多人协同编辑,特别适合【网络管理严格的政府国企】

===============================================================
顺便总结以前分享过的帖子,方便大家学习

联系QQ:2385350359


经验分享:























[此贴子已经被作者于2025/4/20 20:14:55编辑过]
2楼
程兴刚 发表于:2025/4/20 20:11:00
还没用到,只要是为了支持狐表的发展中深造,但必须顶起来!
3楼
冷泉 发表于:2025/4/21 9:29:00
顶顶!!!!!
共3 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02734 s, 3 queries.