Что нового

Как кликнуть по элементу через класс HTML

DOMINANT

Новичок
Сообщения
42
Репутация
0
Добрый день! Пытаюсь кликнуть через класс (это важно) на кнопку личный кабинет на сайте zakupki.гов.ру, на win 7 ie 11 все работает идеально, но в win 10 ie 11 получаю ошибку, лог и сам код ниже. Мне важно понять в чем ошибка моего метода и посему под десятой виндой ругается на For $oButton In $oButtons

код:
Код:
#include <IE.au3>

ProcessClose ("iexplore.exe") ; Закрытие существующего процесса
$oIE = _IECreate('zakupki.gov.ru')
_IELoadWait($oIE)
Sleep(200)
WinSetState(WinGetTitle($oIE), '', @SW_MAXIMIZE)
Sleep(200)
$oButtons = _IETagNameGetCollection($oIE, "dd")
For $oButton In $oButtons
    If $oButton.className == "cabinet" Then
    _IEAction($oButton, 'click')
 EndIf
 Next


ошибка из лога:

Код:
>"D:\NIAP-KT\autoit-v3\install\SciTe\..\autoit3.exe" /ErrorStdOut "C:\Users\Теплосервис\Documents\444.au3"    
--> IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_InvalidObjectType ()
--> IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_InvalidObjectType ()
--> IE.au3 T3.0-2 Error from function _IETagNameGetCollection, $_IESTATUS_InvalidObjectType
"C:\Users\???????????\Documents\444.au3" (10) : ==> Variable must be of type "Object".:
For $oButton In $oButtons
For $oButton In $oButtons^ ERROR
>Exit code: 1    Time: 2.568
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
У вас версии AutoIT одинаковые на 7 и на 10?
Попробуйте еще запускать 64 битный AutoIT
 
Автор
DOMINANT

DOMINANT

Новичок
Сообщения
42
Репутация
0
inververs сказал(а):
У вас версии AutoIT одинаковые на 7 и на 10?
Попробуйте еще запускать 64 битный AutoIT

Да версии абсолютно одинаковые, как запустить 64 битный Scite? Я запустил через 64 битный ярлык Autoit64.exe файл скрипта все тоже самое опять ругается на переменные почему?
 

Вложения

  • .JPG
    .JPG
    125.4 КБ · Просмотры: 12

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Не scite, а скрипт запустите как 64 битный, правой кнопкой и выбрать из меню
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
DOMINANT
Win10 Pro x64 (1607), IE 11.576.14393.0 (11.0.38), AutoIt 3.3.14.2.
Никаких проблем со скриптом нет. Всё отрабатывает. Кликает по "Личный кабинет" - появляется меню из двух пунктов. Пробовал запускать и как x86 и как x64 - всё работает.


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

На Win10 Pro x86 тоже без ошибок.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
И изучите querySelector
Т.к искать dd с классом cabinet через коллекцию и цикл - устарело.


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

DOMINANT
Еще проверь, создается ли у тебя объект oIe
Поможет функция IsObj или макрос @error
 
Автор
DOMINANT

DOMINANT

Новичок
Сообщения
42
Репутация
0
inververs сказал(а):
И изучите querySelector
Т.к искать dd с классом cabinet через коллекцию и цикл - устарело.


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

DOMINANT
Еще проверь, создается ли у тебя объект oIe
Поможет функция IsObj или макрос @error




хорошо, спасибо это может быть вызвано что версия портативная? то есть с сайта программы скачан в виде zip
 
Автор
DOMINANT

DOMINANT

Новичок
Сообщения
42
Репутация
0
Вообщем я до сих пор мучаюсь, по совету проверил создается ли $oIE через isObj получаю $oIE это обьект! Сейчас пытаюсь нажать левую выдвигающуюся панель...

Код:
#include <IE.au3>

ProcessClose ("iexplore.exe") ; Закрытие существующего процесса
$oIE = _IECreate("zakupki.gov.ru", 1, 1, 1, 1)
If IsObj($oIE) Then
    MsgBox(4096, "", "$oIE это объект.")
Else
    MsgBox(4096, "", "$oIE это не объект.")
EndIf


Затем пробовал через querySelector вот так, в конце добавил вывод msgBox чтобы увидеть отдает ли скрипт какие то данные в меседж боксе, там ничего. В консоле браузеров Chrome, и IE в ручную данный селектор отрабатывается хорошо

Код:
#include <IE.au3>
ProcessClose ("iexplore.exe") ; Закрытие существующего процесса
$oIE = _IECreate("zakupki.gov.ru", 1, 1, 1, 1)
WinSetState(WinGetTitle($oIE), '', @SW_MAXIMIZE)
$leftNav = $oIE.document.querySelector('body > div > div.wrapper > div.navigation > div > ul:nth-child(2) > li')
MsgBox(1, "Ответ", $leftNav)
 

Вложения

  • 2222.JPG
    2222.JPG
    128.3 КБ · Просмотры: 13

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
DOMINANT [?]
Затем пробовал через querySelector вот так, в конце добавил вывод msgBox чтобы увидеть отдает ли скрипт какие то данные в меседж боксе, там ничего.
Отдает, вы на правильном пути.
Но только через msbox нельзя показать объект.
Пробуйте так:
Код:
MsgBox(1, "Ответ", ObjName($leftNav))

Второй момент, такой селектор как у вас не рационален. Вместо его подойдет такой: 'li.nav2'
 
Автор
DOMINANT

DOMINANT

Новичок
Сообщения
42
Репутация
0
Неужели!!! :laugh: я нашел причину моей проблемы, я работал через TeamViewer , видимо система определила меня как стороннего пользователя, поэтому происходили такие глюки, я решил эту проблему, следующим образом запустил от имени администратора SciTe все заработало, и все что раньше делал тоже заработало тему можно закрывать, всем спасибо :ok:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
DOMINANT [?]
тему можно закрывать

[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Автор
DOMINANT

DOMINANT

Новичок
Сообщения
42
Репутация
0
Garrett сказал(а):
DOMINANT [?]
тему можно закрывать

[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]




Я через taptalk сижу


Отправлено с моего iPhone используя Tapatalk
 
A

Alofa

Гость
OffTopic:
Garrett сказал(а):
... не видно ссылки Тема не решена?!
Ссылка-то видна и даже нажимается, но толку ноль.
По крайней мере у меня на Android (UC Browser) так.

DOMINANT сказал(а):
... Я через taptalk сижу
Зачем вам тогда скрипты для Windiws? :scratch:
 
Верх