Автор Тема: Как кликнуть по элементу через класс HTML  (Прочитано 1682 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн DOMINANT [?]

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

код:
Код: AutoIt [Выделить]
#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

Русское сообщество AutoIt

Как кликнуть по элементу через класс HTML
« Отправлен: Январь 22, 2017, 14:25:15 »

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2085
  • Репутация: 451
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как кликнуть по элементу через класс HTML
« Ответ #1, Отправлен: Январь 22, 2017, 15:16:39 »
У вас версии AutoIT одинаковые на 7  и на 10?
Попробуйте еще запускать 64 битный AutoIT

Оффлайн DOMINANT [?]

  • Veni Vidi Vici
  • Осваивающий
  • **
  • Сообщений: 42

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как кликнуть по элементу через класс HTML
« Ответ #2, Отправлен: Январь 23, 2017, 18:58:44 »
У вас версии AutoIT одинаковые на 7  и на 10?
Попробуйте еще запускать 64 битный AutoIT

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


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2085
  • Репутация: 451
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как кликнуть по элементу через класс HTML
« Ответ #3, Отправлен: Январь 23, 2017, 19:21:16 »
Не scite, а скрипт запустите как 64 битный, правой кнопкой и выбрать из меню

Русское сообщество AutoIt

Re: Как кликнуть по элементу через класс HTML
« Ответ #3 Отправлен: Январь 23, 2017, 19:21:16 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3268
  • Репутация: 856
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Как кликнуть по элементу через класс HTML
« Ответ #4, Отправлен: Январь 23, 2017, 19:22:06 »
DOMINANT
Win10 Pro x64 (1607), IE 11.576.14393.0 (11.0.38), AutoIt 3.3.14.2.
Никаких проблем со скриптом нет. Всё отрабатывает. Кликает по "Личный кабинет" - появляется меню из двух пунктов. Пробовал запускать и как x86 и как x64 - всё работает.


Добавлено: Январь 23, 2017, 19:26:05
На Win10 Pro x86 тоже без ошибок.

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2085
  • Репутация: 451
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как кликнуть по элементу через класс HTML
« Ответ #5, Отправлен: Январь 23, 2017, 19:26:47 »
И изучите querySelector
Т.к искать dd с классом cabinet через коллекцию и цикл - устарело.


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

Оффлайн DOMINANT [?]

  • Veni Vidi Vici
  • Осваивающий
  • **
  • Сообщений: 42

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как кликнуть по элементу через класс HTML
« Ответ #6, Отправлен: Январь 23, 2017, 20:20:09 »
И изучите querySelector
Т.к искать dd с классом cabinet через коллекцию и цикл - устарело.


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

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

Оффлайн DOMINANT [?]

  • Veni Vidi Vici
  • Осваивающий
  • **
  • Сообщений: 42

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как кликнуть по элементу через класс HTML
« Ответ #7, Отправлен: Январь 29, 2017, 08:47:30 »
Вообщем я до сих пор мучаюсь, по совету проверил создается ли $oIE через isObj получаю $oIE это обьект! Сейчас пытаюсь нажать левую выдвигающуюся панель...

Код: AutoIt [Выделить]
#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 в ручную данный селектор отрабатывается хорошо

Код: AutoIt [Выделить]
#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)



Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Январь 29, 2017, 09:06:31 от DOMINANT »

Русское сообщество AutoIt

Re: Как кликнуть по элементу через класс HTML
« Ответ #7 Отправлен: Январь 29, 2017, 08:47:30 »

Помечен как лучший ответ пользователем DOMINANT Отправлен Январь 30, 2017, 19:37:51

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2085
  • Репутация: 451
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как кликнуть по элементу через класс HTML
« Ответ #8, Отправлен: Январь 29, 2017, 11:04:52 »
DOMINANT  [?]
Цитировать
Затем пробовал через querySelector вот так, в конце добавил вывод msgBox чтобы увидеть отдает ли скрипт какие то данные в меседж боксе, там  ничего.
Отдает, вы на правильном пути.
Но только через msbox нельзя показать объект.
Пробуйте так:
Код: AutoIt [Выделить]
MsgBox(1, "Ответ", ObjName($leftNav))

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

Оффлайн DOMINANT [?]

  • Veni Vidi Vici
  • Осваивающий
  • **
  • Сообщений: 42

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как кликнуть по элементу через класс HTML
« Ответ #9, Отправлен: Январь 30, 2017, 19:37:32 »
Неужели!!!  :laugh: я нашел причину моей проблемы, я работал через TeamViewer , видимо система определила меня как стороннего пользователя, поэтому происходили такие глюки, я решил эту проблему, следующим образом запустил от имени администратора SciTe все заработало, и все что раньше делал тоже заработало тему можно закрывать, всем спасибо :ok:

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3724
  • Репутация: 942
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как кликнуть по элементу через класс HTML
« Ответ #10, Отправлен: Январь 30, 2017, 22:24:26 »
DOMINANT  [?]
Цитировать
тему можно закрывать

На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
Тема не решена

Скорблю и помню.




Оффлайн DOMINANT [?]

  • Veni Vidi Vici
  • Осваивающий
  • **
  • Сообщений: 42

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
DOMINANT  [?]
Цитировать
тему можно закрывать

На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
Тема не решена

Я через taptalk сижу


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

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3724
  • Репутация: 942
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
DOMINANT  [?]
Цитировать
Tapatalk
Неужели в такой "крутой" программе не видно ссылки Тема не решена?!

Оффлайн Alofa [?]

  • Скриптер
  • ****
  • Сообщений: 1025
  • Репутация: 131
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
OffTopic
... не видно ссылки Тема не решена?!
Ссылка-то видна и даже нажимается, но толку ноль.
По крайней мере у меня на Android (UC Browser) так.

... Я через taptalk сижу
Зачем вам тогда скрипты для Windiws? :think:
« Последнее редактирование: Март 03, 2017, 19:50:08 от Alofa »

Русское сообщество AutoIt

Re: Как кликнуть по элементу через класс HTML
« Ответ #13 Отправлен: Март 03, 2017, 19:44:59 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
4433 Просмотров
Последний ответ Январь 23, 2011, 00:50:54
от uninstall
18 Ответов
5544 Просмотров
Последний ответ Июнь 02, 2012, 23:58:49
от Nelsy
3 Ответов
2486 Просмотров
Последний ответ Февраль 15, 2012, 19:45:27
от Viktor1703
1 Ответов
2048 Просмотров
Последний ответ Март 22, 2012, 18:35:03
от Yashied
6 Ответов
2374 Просмотров
Последний ответ Октябрь 31, 2012, 21:24:00
от Suppir
3 Ответов
2505 Просмотров
Последний ответ Август 28, 2012, 17:46:52
от AZJIO
5 Ответов
2693 Просмотров
Последний ответ Сентябрь 06, 2013, 19:16:26
от Yashied
8 Ответов
2247 Просмотров
Последний ответ Апрель 13, 2014, 17:29:17
от aleksander12
0 Ответов
769 Просмотров
Последний ответ Апрель 01, 2014, 15:15:02
от madmasles
11 Ответов
378 Просмотров
Последний ответ Май 23, 2017, 18:14:03
от Alofa