如何从自动

时间:2017-01-27 16:16:39

标签: html internet-explorer tabs autoit

以下是我的问题的背景:我有一个IE窗口打开几个标签(事实上,很多,大约50)。我正在浏览选项卡(使用ControlSend“^ i”)并希望获取当前显示的选项卡的innertext。但是,_IEPropertyGet($ global_ie,“innertext”)命令的每次都是第一个选项卡的innertext(IE创建的那个)。

我的问题是:如何获取当前标签的innertext?

我有一些限制:

  • 我不能做图形化的事情,因为IE窗口将是 隐藏
  • 我无法刷新/重新加载标签/页面(有50个标签,最终结果是 太多的请求和被DDOS的反DDOS机器人抓住了 网站)
  • 我无法打开不同IE中的标签(太多标签,不确定我的电脑 一次可以处理50个IE)

其他信息:

  • 使用Navigate2函数(带参数)创建选项卡 “0×1000”)

  • 我使用ControlSend函数浏览选项卡(..., “^ $ⅰ)

我使用Autoit(以及任何自动化工具)都很新,所以我可能不了解一些基本的东西。

非常感谢你们!

[来自Autoit论坛的X-POST]

1 个答案:

答案 0 :(得分:0)

我在Autoit论坛上的帖子已经回答了。这就解决了这个问题。要获取活动选项卡,我需要使用以下功能:

Func _IEGetActiveTab()
Local $hwnd, $i, $title, $oIE

; get first IE instance
$oIE = _IEAttach ("", "instance", 1)

If @error = $_IESTATUS_Success Then
    ; get window title
    $hwnd = _IEPropertyGet($oIE, "hwnd")
    $title = WinGetTitle($hwnd)

    ;strip off trailing browser text
    $i = StringInStr($title, ' - ', 0, -1)
    If $i > 0 Then
        $title = StringLeft($title, $i - 1)
    EndIf

    $oIE = _IEAttach($title, "windowtitle")
EndIf

Return $oIE
EndFunc

添加一些延迟并使用_IEPropertyGet($active_tab, "innertext")后,我就可以获得该页面的文字了。