![](/img/trans.png)
[英]Use WatiN in windows Form to Automate Clicking and Writing in Internet Explorer C#
[英]Clicking in Internet Explorer
我必须编写用于在Internet Explorer中单击的简单程序,但是已经开始,但是由于我在编程方面的经验很少,所以无法使用。 在首页11.html中,我需要在下一个“ Sign2”上单击带有文本“ Sign1”的按钮
//11.html
<input type="button" class="button" onclick="document.location='21.html'" value="Sign1">
//21.html
<input type="button" class="button" onclick="document.location='31.html'" value="Sign2">
怎么了? 第二个按钮不起作用。
Public Class Form1 Public ie = CreateObject("InternetExplorer.Application")
Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click
ie.Visible = True
ie.navigate("http://....com/11.html")
Do
Loop Until ie.ReadyState = 4
Actions()
End Sub
Private Sub Actions()
Dim eInputs = ie.Document.GetElementsByTagName("input")
For Each eInput In eInputs
If eInput.GetAttribute("value") = "Sign1" Then
eInput.Click()
Exit For
End If
Next
Threading.Thread.Sleep(5000)
//here ie href is about:blank - WHY???
eInputs = ie.Document.GetElementsByTagName("input")
For Each eInput In eInputs
If eInput.GetAttribute("value") = "Sign2" Then
eInput.Click()
Exit For
End If
Next
End Sub
End Class
我在这里看到两个问题:
西里尔字母:
If eInput.GetAttribute("value") = "Подписать2" Then
我认为您无法将这些字符硬编码到源代码中,
因为它们不会被编译器读取。 因此,很有可能getAttribute
方法返回了正确的字符串,但随后将其与??????
进行了比较。 一个,所以找不到它。 也许,您可能想从外部来源( txt
文件,数据库等)获取它们。
两个按钮之间没有等待时间:
如您所说, 第二个按钮不起作用。 (非常宽泛的定义:正在做什么?正在引发错误吗?),我认为第一个是。 因此,可能是您已经找到一种解决字母问题的方法。 因此,我认为问题是您一次单击和另一次单击之间没有等待足够的时间,因此当您单击第二个按钮时,该页面尚未加载。 。
基本上:
1)您点击客户端中的按钮1(例如Google Chrome);
2)单击按钮1会在后端调用一个动作,因此服务器将开始生成新的HTML文档,您将在其中寻找按钮2;
3)...但是,您没有给服务器任何时间来重新生成页面,因此您已经在寻找按钮2了,因为服务器没有结束重新生成,按钮2在您的客户端中可能还不存在。
所以,这就是为什么它不起作用的原因。 如果是这种情况,请添加一条命令,等待一段时间才能找到按钮2。由于您引用了所有.NET语言,因此尚不清楚您使用的是哪种语言开发,但查看的代码可以识别VB。净。
因此,要在VB.NET中等待5秒钟,然后再运行代码的第二部分:
Threading.Thread.Sleep(5000)
放在第一个和第二个For Loop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.