OrangeSound
Новичок
- Сообщения
- 28
- Репутация
- 0
Здравствуйте! Нужно создать новую вкладку (желательно не через send) и получить контроль для _IEFormGetObjByName. Как-то так...
Нужно чтобы новая вкладка открывалась в том же окне, извиняюсь что не дополнил.alex33 сказал(а):ПосмотритеКод:_IECreate _IEAttach
#include <IE.au3>
$oIE = _IECreate() ; создаем первый экземпляр IE, по умолчанию открывается 1 вкладка
$oIE.navigate2("url") ; создаем вторую вкладку в том же окне
Он открывает не новую вкладку, а переходит с этой же страницы на Url. Нужна именно новая вкладка, и чтобы старая не закрывалась.veretragna сказал(а):OrangeSound, на данный момент существует только один способ это сделать.
Код:#include <IE.au3> $oIE = _IECreate() ; создаем первый экземпляр IE, по умолчанию открывается 1 вкладка $oIE.navigate2("url") ; создаем вторую вкладку в том же окне
Этот способ не идеален, поскольку не возвращает идентификатор нового объекта-вкладки, а без идентификатора объекта мы не можем с ним взаимодействовать.
Получить этот идентификатор можно только через перечисление списка окон Windows.
Для его получения можете попробовать совместить метод .navigate2() с вот этим примером.
$oIE.navigate2("url", 2048)
Совершенно не понял как перечислять окна...Можно по подробнее, желательно с примером.veretragna сказал(а):Простите, я забыл про флаги.
Нужно в последней строчке сделать так:
Код:$oIE.navigate2("url", 2048)
А как назначить его переменной, еще пока сам не придумал.
"Родного способа" под IE.au3 не существует, надо перечислять окна, как по ссылке в моем предыдущем сообщении.
#include <IE.au3>
$oIE = _IECreate("http://wikipedia.org")
$oIE.navigate2("http://google.com", 2048)
Sleep(1000)
; в этом месте нужно придумать, как дождаться окончания загрузки новой вкладки.
; создается новый объект $oIE_2, и нам сначала нужно дождаться загрузки страницы, а потом делать _IEAttach, иначе _IEAttach выкинет ошибку "подходящего окна не найдено".
$oIE_2 = _IEAttach("google.com", "url")
FileWrite("1.txt", _IEDocReadHtml($oIE_2))
inververs сказал(а):Вам же написалиКод:_IEAttach
$oIE.navigate2("http:", 2048)
Sleep(3000)
$oIE = _IEAttach("http:", "url")
$oLink = _IELinkClickByText($oIE, "Металлы, металлопрокат")
veretragna сказал(а):OrangeSound, сначала нужно дождаться загрузки новой вкладки, а потом делать _IEAttach, иначе _IEAttach выкинет ошибку "подходящего окна не найдено". В моем примере за это отвечает строчка Sleep(1000), но я все еще думаю, чем бы это дело заменить.
#include <IE.au3>
Local $oIE, $oTabIE, $iTimer, $iYes
$oIE = _IECreate('https://www.google.ru')
$oIE.Navigate('http://ya.ru', 0x0800)
$iTimer = TimerInit()
_IEErrorNotify(False)
Do
Sleep(500)
If TimerDiff($iTimer) > 10000 Then ExitLoop
$oTabIE = _IEAttach('http://ya.ru', 'URL')
$iYes = IsObj($oTabIE)
Until $iYes
_IEErrorNotify(True)
If $iYes Then
ConsoleWrite(_IEDocReadHTML($oTabIE) & @LF)
Else
ConsoleWrite('Error' & @LF)
EndIf
Все получилось, переменные были разные... Спасибо за помощь! :IL_AutoIt_1:veretragna сказал(а):Нет, проблем быть не должно. Подавляющее большинство методов _IE* работают от версии 8 и выше, то есть и на 11 должно работать нормально. Скорее всего, Вы эту кнопку неправильно ищете. Сбросьте исходный код страницы, надо посмотреть детально.