2017-01-27 13 views
0

Вот контекст моей проблемы: у меня есть окно IE, которое открывает несколько вкладок (на самом деле, много, около 50). Я просматриваю вкладки (с помощью ControlSend «^ i») и хочу получить внутренний текст текущей отображаемой вкладки. Однако то, что происходит от команды _IEPropertyGet ($ global_ie, «innertext»), - это каждый раз, когда внутренний текст первой вкладки (тот, с которой был создан IE).Как получить внутренний текст с вкладки IE в Autoit

Мой вопрос: как получить внутренний текст текущей вкладки?

Некоторых ограничений у меня есть:

  • Я не могу делать графические вещи, так как окна IE будут скрытым
  • Я не могу обновить/перезагрузить вкладки/страницы (с 50 вкладками, он заканчивает с слишком много запросов и быть пойманным анти-DDOS бота на сайте)
  • Я не могу открыть вкладки в другом IE (слишком много вкладок, не уверен, что мой компьютер может обрабатывать 50 ИЭ сразу)

Дополнительная информация:

  • Вкладки созданы с помощью функции Navigate2 (с параметром "0x1000")

  • Я перемещаться по вкладкам с помощью функции ControlSend (..., "^ $ i)

Я совершенно новый, используя Autoit (и любые средства автоматизации), поэтому возможно, что я не был un выслушать некоторые фундаментальные вещи.

Спасибо большое, ребята!

[X-POST с форумов AutoIt]

ответ

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"), я был в состоянии получить текст страницы.