我有一个应用程序,我可以登录社交网络,并不断检查以查看何时重置非活动帐户。在这种情况下,我在他们的网站上使用Xbox的免费gamertag更改用于查看这些名称何时被重置。我创建了一个应用程序,我登录到Xbox.com并导航到更改webbrowser上的gamertag页面,我在文本框中键入了我想要的Gamertag(一个非活动标签,将很快重置),我点击了“Autoclick”按钮,它不断尝试声明帐户名称。所以我创建了这个脚本,但后来我意识到它会很快超时。该程序在快速速度下只能持续约10分钟(有3种速度,慢速 - 中速 - 快速),但速度会慢一些。但是,我意识到我必须每隔几秒刷新一次页面才能让它工作更长时间。一旦我这样做,应用程序就更耐用了,持续了大约30多分钟。然而,它仍然超时。有些人制作这些剧本可以持续数天,但我的目标只有一天。所以我问是否有人知道如何改进这个?这是我脚本的一部分。我有一个按钮,一旦点击使计时器能够自动点击声明按钮。
所以我的按钮:
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If RadioButton1.Checked = True Then
Timer1.Interval = 40
ElseIf RadioButton2.Checked = True Then
Timer1.Interval = 175
Else
Timer1.Interval = 500
End If
If ((WebBrowser1.IsBusy)) Then
Else
Timer1.Enabled = True
End If
End Sub
然后是Timer1,它执行自动更新,但也具有刷新属性以使其更耐用:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Not number_of_ticks > 170 Then
number_of_ticks += 1
If ((WebBrowser1.IsBusy)) Then
Else
If WebBrowser1.Url.ToString = "https://live.xbox.com/en-US/ChangeGamertag" Then
WebBrowser1.Document.GetElementById("NewGamertag").SetAttribute("value", txtTurbo.Text)
WebBrowser1.Document.GetElementById("claimIt").InvokeMember("Click")
Else
WebBrowser1.Navigate("https://live.xbox.com/en-US/ChangeGamertag")
End If
End If
Else
'number_of_ticks has exceed the maximum amount of allowed ticks
Timer1.Enabled = False
WebBrowser1.Refresh()
number_of_ticks = 0
Timer1.Enabled = True
End If
End Sub
我不知道有多少方法可以让它持续更长时间,但如果有人知道如何做到这一点,我会非常感激。
答案 0 :(得分:0)
从您的描述中可以看出,您说刷新页面的频率越高,退出前的时间就越少。 Timer的interval属性以毫秒为单位进行测量,此时您的最慢设置为170个滴答,每个500毫秒。因此,您每85秒检查一下这个缺口现在是否可用。我认为你可以妥协很多,而不是将间隔设置为1000或2000。
您的另一个选择是每隔30分钟导航到登录页面并再次登录?
PS。
而不是使用:
If ((WebBrowser1.IsBusy)) Then
Else
'code
你可以使用:
If not WebBrowser1.IsBusy Then
'code
看起来更容易阅读imo。
侧边栏:我认为你的程序非常酷:)答案 1 :(得分:0)
几年后我没有使用过WebBrowser对象,但我相信你可能会陷入无休止的WebBrowser1.IsBusy
。它类似于浏览页面时有时它永远不会结束加载。在这种情况下,您需要使用某种超时机制来停止WebBrowser1.Stop
,然后再尝试导航到该页面。
或者只是忽略isbusy并在刷新页面之前强制停止。增加计时器,因为你的最长计时器500实际上是500毫秒,这是0.5秒 - 你的网页可能加载速度不快。