【发布时间】:2020-03-20 14:09:51
【问题描述】:
我设置了一个要运行的脚本,该脚本可以打开 Messenger,遍历一组要向其发送消息的人,并向每个人发送一条预先录制的文本消息(保存在编号的文件中)。问题是我都是通过Shell来做这一切的,而且非常草率。它在一定程度上有效,但我正在寻找一种更好的方法来做到这一点,它更清洁并且可以独立工作,所以我不必照看它。我将包括当前的工作代码,然后是我想要工作的代码,然后我将专注于我需要帮助的问题。
这是我当前的工作代码:
Dim messenger, readFile(1), str1, date1, date2, days
date2 = Date
date1 = "12-Dec-19"
days = DateDiff("d", date1, date2)
messenger=Array(...)
Set obj = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
Set obj1 = obj.OpenTextFile("C:\Users\Sherman\Documents\Message\Day" & days & ".txt", ForReading)
readFile(0) = obj1.ReadAll
readFile(1) = "{ENTER}"
str1 = Join(readFile)
For i = 0 To UBound(messenger)
CreateObject("WScript.Shell").Run("https://www.messenger.com/t/" & messenger(i))
WScript.Sleep 12500
CreateObject("WScript.Shell").SendKeys str1
WScript.Sleep 2000
Next
obj1.Close
Set obj=Nothing
此代码适用于我的默认浏览器,即 Opera(但可以使用我设置为默认的任何浏览器),但它不能等待浏览器完成加载,这样会更整洁。所以我只好做我不喜欢的事情,并在这个脚本中使用 IE:
Dim messenger, readFile(1), str1, date1, date2, days, IE
date2 = Date
date1 = "12-Dec-19"
days = DateDiff("d", date1, date2)
messenger=Array(...)
Set obj = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
Set obj1 = obj.OpenTextFile("C:\Users\Sherman\Documents\Message\Day" & days & ".txt", ForReading)
readFile(0) = obj1.ReadAll
readFile(1) = "{ENTER}"
str1 = Join(readFile)
For i = 0 To UBound(messenger)
Set IE = CreateObject("InternetExplorer.Application")
With IE
.visible = true
.navigate "https://www.messenger.com/t/" & messenger(i)
While .Busy
WScript.sleep 100
Wend
.getElementsByName("span data-text='true'").value = str1 '<-This is where the error occurs'
WScript.Sleep 30000 'give time for shell to type out the message'
end With
IE.Close 'not sure if this works or not because the error occurs before I get here'
Next
obj1.Close
我可以像上面那样创建一个 shell 对象来发送消息,但由于某种原因,它不像在第一个代码中那样作为文本块发送,实际上输入每个字符都需要时间(非常烦人! )。文本字段包含在一个跨度中,该跨度包含在另一个跨度中。所以我不能只针对标签来发送消息。此外,.getElementById 没有可定位的 ID。我得到的错误是“对象不支持这个属性或方法”,即使我已经看到其他关于使用 .getElementsByName 方法的 VBScript 线程。
接下来,我想在启动另一个浏览器实例之前关闭每个浏览器实例。出于某种原因,关闭浏览器窗口似乎比打开它要复杂得多。
我是不是把这弄得太复杂了?有没有更简单的方法可以更好地向多人发送自动消息?我应该完全放弃 VBScript 并使用其他东西吗?任何帮助将不胜感激。
【问题讨论】:
标签: internet-explorer vbscript