我必须向工作中的第三方供应商网站提出一些状态请求。每天500-600次。我正在尝试自动执行此任务。目前我的代码使用以下方法。
; Helper function to get the text from current web page
CurrentScreen() {
Sleep, 500
MouseClick, left, 880, 240
Send, {CTRLDOWN}a{CTRLUP}
Sleep, 500
Send, {CTRLDOWN}c{CTRLUP}
Sleep, 500
return Clipboard
}
; Helper function to read at line number X and return text
GetInformation(webpageBuffer) {
If (A_Index == 30)
; Do something here and return data
}
wb := ComObjCreate("InternetExplorer.Application")
wb.Visible := True
wb.Navigate("www.someVendor.com")
IELoad(wb)
; Do a lot of clicking and searching
someText := GetInformation(CurrentScreen())
我在网上搜索了URLDownloadToFile并阅读了文档here。但这不起作用,因为我需要的供应商网站信息是通过表单请求的,它没有我可以使用的静态网站链接。
我当前的方法工作,但它相当慢,因为我已经为我必须阅读的每个页面使用额外的2-3秒,并且我的程序将在运行时闪烁蓝色和白色(来自副本和糊)。是否有其他解决方案从Internet Explorer页面加载读取文本,不使用复制,粘贴,读取剪贴板方法?
答案 0 :(得分:2)
如果您知道包含所需文本的确切元素名称,请使用
var := wb.Document.getElementByID(Element_Name).innerText
检索文本。如果你不知道变量名,但知道索引号,i,或者可以遍历索引号,特别是寻找某些文本,有类似的东西:
wb.document.all[i].innerText
H个,
答案 1 :(得分:2)
您可以更进一步直接与API通信。这样更快,更可靠,可以完全隐藏在后台,而不会影响用户体验。
你只需要找出3件事:
您可以通过查看HTML代码或使用浏览器的开发人员工具实际记录表单提交或使用postman或像Fiddler这样的独立程序来查找。
以下是最终结果的示例:
@Resource
private List<SomeInterface> list;