以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]网页登录并写入数据出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=110173)

--  作者:188802386
--  发布时间: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()

--  作者:有点甜
--  发布时间: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
--  发布时间:2017/11/28 12:06:00
--  
还是提示错误
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20171128120454.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/11/28 12:09:00
--  

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

 

请贴出具体网址测试。


--  作者:188802386
--  发布时间:2017/11/28 12:21:00
--  
但是我单独测试就是对的,只有把两个合并在一起就提示错误了
--  作者:有点甜
--  发布时间:2017/11/28 12:28:00
--  
加入msgbox弹出,看看是哪句代码开始报错。
--  作者:188802386
--  发布时间: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")

--  作者:有点甜
--  发布时间:2017/11/28 14:25:00
--  
id值分别改成 LoginValidIP_ip、LoginValidIP_storeName
--  作者:188802386
--  发布时间: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()

--  作者:有点甜
--  发布时间: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