Что нового

Создание новой вкладки и перехват

OrangeSound

Новичок
Сообщения
28
Репутация
0
Здравствуйте! Нужно создать новую вкладку (желательно не через send) и получить контроль для _IEFormGetObjByName. Как-то так...
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Посмотрите
Код:
_IECreate
_IEAttach
 

veretragna

Как писал, так и работает.
Сообщения
140
Репутация
10
OrangeSound, на данный момент существует только один способ это сделать.
Код:
#include <IE.au3>
$oIE = _IECreate() ; создаем первый экземпляр IE, по умолчанию открывается 1 вкладка
$oIE.navigate2("url") ; создаем вторую вкладку в том же окне


Этот способ не идеален, поскольку не возвращает идентификатор нового объекта-вкладки, а без идентификатора объекта мы не можем с ним взаимодействовать.
Получить этот идентификатор можно только через перечисление списка окон Windows.
Для его получения можете попробовать совместить метод .navigate2() с вот этим примером.
 
Автор
O

OrangeSound

Новичок
Сообщения
28
Репутация
0
veretragna сказал(а):
OrangeSound, на данный момент существует только один способ это сделать.
Код:
#include <IE.au3>
$oIE = _IECreate() ; создаем первый экземпляр IE, по умолчанию открывается 1 вкладка
$oIE.navigate2("url") ; создаем вторую вкладку в том же окне


Этот способ не идеален, поскольку не возвращает идентификатор нового объекта-вкладки, а без идентификатора объекта мы не можем с ним взаимодействовать.
Получить этот идентификатор можно только через перечисление списка окон Windows.
Для его получения можете попробовать совместить метод .navigate2() с вот этим примером.
Он открывает не новую вкладку, а переходит с этой же страницы на Url. Нужна именно новая вкладка, и чтобы старая не закрывалась.
Можно ли создать новую вкладку, ввести адрес сайта, а потом назначить переменную $oIE на этот сайт?
 

veretragna

Как писал, так и работает.
Сообщения
140
Репутация
10
Простите, я забыл про флаги.
Нужно в последней строчке сделать так:
Код:
$oIE.navigate2("url", 2048)


А как назначить его переменной, еще пока сам не придумал.
"Родного способа" под IE.au3 не существует, надо перечислять окна, как по ссылке в моем предыдущем сообщении.
 
Автор
O

OrangeSound

Новичок
Сообщения
28
Репутация
0
veretragna сказал(а):
Простите, я забыл про флаги.
Нужно в последней строчке сделать так:
Код:
$oIE.navigate2("url", 2048)


А как назначить его переменной, еще пока сам не придумал.
"Родного способа" под IE.au3 не существует, надо перечислять окна, как по ссылке в моем предыдущем сообщении.
Совершенно не понял как перечислять окна...Можно по подробнее, желательно с примером.
 

veretragna

Как писал, так и работает.
Сообщения
140
Репутация
10
Оказывается, все придумано уже до меня.

Код:
#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))
 
Автор
O

OrangeSound

Новичок
Сообщения
28
Репутация
0
inververs сказал(а):
Вам же написали
Код:
_IEAttach


Код:
$oIE.navigate2("http:", 2048)
Sleep(3000)
$oIE = _IEAttach("http:", "url")
$oLink = _IELinkClickByText($oIE, "Металлы, металлопрокат")


Не кликает по ссылке =(
 

veretragna

Как писал, так и работает.
Сообщения
140
Репутация
10
OrangeSound, сначала нужно дождаться загрузки новой вкладки, а потом делать _IEAttach, иначе _IEAttach выкинет ошибку "подходящего окна не найдено". В моем примере за это отвечает строчка Sleep(1000), но я все еще думаю, чем бы это дело заменить.
 
Автор
O

OrangeSound

Новичок
Сообщения
28
Репутация
0
veretragna сказал(а):
OrangeSound, сначала нужно дождаться загрузки новой вкладки, а потом делать _IEAttach, иначе _IEAttach выкинет ошибку "подходящего окна не найдено". В моем примере за это отвечает строчка Sleep(1000), но я все еще думаю, чем бы это дело заменить.

Attach видит, но теперь появилась другая проблема, он не кликает по ссылке.
 

veretragna

Как писал, так и работает.
Сообщения
140
Репутация
10
Сбросьте-ка исходный код страницы, мой пример как раз его записывает в 1.txt.
Упс, сейчас у меня пропадет электричество, вернусь немного позже, прошу прощения.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
OrangeSound,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.






Добавлено:
Сообщение автоматически объединено:

OrangeSound,
Код:
#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
 
Автор
O

OrangeSound

Новичок
Сообщения
28
Репутация
0
Забыл сказать, что стоит Windows 10 соответственно IE11. Может с этим какие проблемы могут быть?
 

veretragna

Как писал, так и работает.
Сообщения
140
Репутация
10
Нет, проблем быть не должно. Подавляющее большинство методов _IE* работают от версии 8 и выше, то есть и на 11 должно работать нормально. Скорее всего, Вы эту кнопку неправильно ищете. Сбросьте исходный код страницы, надо посмотреть детально.
 
Автор
O

OrangeSound

Новичок
Сообщения
28
Репутация
0
veretragna сказал(а):
Нет, проблем быть не должно. Подавляющее большинство методов _IE* работают от версии 8 и выше, то есть и на 11 должно работать нормально. Скорее всего, Вы эту кнопку неправильно ищете. Сбросьте исходный код страницы, надо посмотреть детально.
Все получилось, переменные были разные... Спасибо за помощь! :IL_AutoIt_1:
 
Верх