Foxtable(狐表)用户栏目专家坐堂 → [求助]网页登录并写入数据出错


  共有1894人关注过本帖树形打印复制链接

主题:[求助]网页登录并写入数据出错

帅哥哟,离线,有人找我吗?
188802386
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
[求助]网页登录并写入数据出错  发帖心情 Post By:2017/11/28 11:32:00 [只看该作者]

两端相同的代码 网址和内容不一样 老是报错,请大侠合并一下

Dim web As new windows.forms.webbrowser
web.ScriptErrorsSuppressed = True
web.Navigate("网址一")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
For Each archor As object In web.Document.Forms
    archor.SetAttribute("target", "_self")
Next
Dim loginId = web.Document.GetElementById("用户名")
Dim password = web.Document.GetElementById("密码")
Dim Image2 = web.Document.GetElementById("yt0")
loginId.setAttribute("value", "222")
password.setAttribute("value", "666")
msgbox("填入了用户名和密码")
image2.InvokeMember("click")

Dim web As new windows.forms.webbrowser
web.ScriptErrorsSuppressed = True
web.Navigate("网址二")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
For Each archor As object In web.Document.Forms
    archor.SetAttribute("target", "_self")
Next
Dim loginId = web.Document.GetElementById("LoginValidIP[ip]")
Dim password = web.Document.GetElementById("LoginValidIP[storeName]")
Dim Image2 = web.Document.GetElementById("yt0")
loginId.setAttribute("value", "175.168.76.1")
password.setAttribute("value", "6666")
msgbox("填写了ip及信息")
image2.InvokeMember("click")
web.Dispose()
GC.Collect()

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/28 11:52:00 [只看该作者]

Dim web As new windows.forms.webbrowser
web.ScriptErrorsSuppressed = True
web.Navigate("网址一")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
For Each archor As object In web.Document.Forms
    archor.SetAttribute("target", "_self")
Next
Dim loginId = web.Document.GetElementById("用户名")
Dim password = web.Document.GetElementById("密码")
Dim Image2 = web.Document.GetElementById("yt0")
loginId.setAttribute("value", "222")
password.setAttribute("value", "666")
msgbox("填入了用户名和密码")
image2.InvokeMember("click")

Dim web1 As new windows.forms.webbrowser
web1.ScriptErrorsSuppressed = True
web1.Navigate("网址二")
Do Until web1.ReadyState = 4
    Application.DoEvents
Loop
For Each archor As object In web1.Document.Forms
    archor.SetAttribute("target", "_self")
Next
Dim loginId1 = web1.Document.GetElementById("LoginValidIP[ip]")
Dim password1 = web1.Document.GetElementById("LoginValidIP[storeName]")
Dim Image21 = web1.Document.GetElementById("yt0")
loginId1.setAttribute("value", "175.168.76.1")
password1.setAttribute("value", "6666")
msgbox("填写了ip及信息")
image21.InvokeMember("click")
web1.Dispose()
GC.Collect()


 回到顶部
帅哥哟,离线,有人找我吗?
188802386
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2017/11/28 12:06:00 [只看该作者]

还是提示错误
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20171128120454.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/28 12:09:00 [只看该作者]

提示错误说明你分析的网页不正确。

 

请贴出具体网址测试。


 回到顶部
帅哥哟,离线,有人找我吗?
188802386
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2017/11/28 12:21:00 [只看该作者]

但是我单独测试就是对的,只有把两个合并在一起就提示错误了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/28 12:28:00 [只看该作者]

加入msgbox弹出,看看是哪句代码开始报错。

 回到顶部
帅哥哟,离线,有人找我吗?
188802386
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2017/11/28 13:55:00 [只看该作者]

<form id="login-valid-ip-form" action="/LoginValidIP/create" method="post">
  
<p class="note"><span class="required">*</span> 为必填项</p>



<div class="form-group">
<label for="LoginValidIP_ip">门店IP</label> <input size="16" maxlength="16" class="form-control" name="LoginValidIP[ip]" id="LoginValidIP_ip" type="text" value="" /> </div>

<div class="form-group">
<label for="LoginValidIP_storeName">门店名称</label> <input size="60" maxlength="200" class="form-control" name="LoginValidIP[storeName]" id="LoginValidIP_storeName" type="text" /> </div>

  <div class="form-group">
  <label for="">公司</label>
      <input size="60" maxlength="60" class="form-control" name="LoginValidIP[domainID]" id="LoginValidIP_domainID" type="text" value="40" readonly>
    </div>

        <div class="form-group">
          <input class="btn btn-primary" type="submit" name="yt0" value="保存" />        </div>

</form>

以上为网页代码
在运行到红色的时候就报错了
Dim loginId1 = web1.Document.GetElementById("LoginValidIP[ip]")
msgbox("1")
Dim password1 = web1.Document.GetElementById("LoginValidIP[storeName]")
msgbox("2")
Dim Image21 = web.Document.GetElementById("yt0")
msgbox("3")
loginId1.setAttribute("value", "175.168.76.1")
msgbox("4")
password1.setAttribute("value", "6")
msgbox("填入了用户名和密码")
image21.InvokeMember("click")

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/28 14:25:00 [只看该作者]

id值分别改成 LoginValidIP_ip、LoginValidIP_storeName

 回到顶部
帅哥哟,离线,有人找我吗?
188802386
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2017/11/28 14:49:00 [只看该作者]

改成这个也是一样的问题,是这样的,这个页面必须登录后才可以在上面操作写入数据,如果分开做成两个按钮分别执行 就可以正常操作 但是点击第一个按钮后需要间隔5秒后再点击第二个按钮,请问如何设置时间延迟
Dim btn1 As WinForm.Button = Forms("登录").Controls("Button1")
btn1.PerformClick()
'延迟5秒
Dim btn2 As WinForm.Button = Forms("登录").Controls("Button2")
btn2.PerformClick()
'延迟5秒
Dim btn3 As WinForm.Button = Forms("登录").Controls("Button3")
btn3.PerformClick()

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/28 14:57:00 [只看该作者]

1、延时,参考

 

Dim sdt As Date = Date.Now
While Date.Now < sdt.AddSeconds(10)
    Application.DoEvents
End While

msgbox("10秒后执行")

 

 

2、方法二,可以这样

 

web1.Navigate("网址二")
Do Until web1.ReadyState = 4 andAlso web1.Document.GetElementById("LoginValidIP[ip]") isnot Nothing
    Application.DoEvents
Loop


 回到顶部