1 (изменено: Alex_Lexon, 2017-12-10 19:38:37)

Тема: AHK: Проблема получения элементов после перехода на другую страницу

Здравствуйте!

Захотел сделать скрипт, что позволяет в InputBox вводить значение для поиска по магазину Steam. В ответ же я показываю картинку и ещё некоторую информацию об игре.

InputBox, choice, Game, Enter game name:

ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := true
ie.Navigate("http://store.steampowered.com/search/?term=" + choice)
while ie.readystate <> 4
	continue
ie.document.getElementsByClassName("search_result_row ds_collapse_flag app_impression_tracked")[0].click()
while ie.readystate <> 4
	continue

asd := ie.document.getElementsByClassName("game_description_snippet")[0].innerText
MsgBox,,, %asd%

По какой-то причине ему не удаётся найти значение asd. Если пробовать в той же вкладке, что открыл AHK, но вручную через консоль - всё выводит (Без "ie.", соответственно). Если сразу в Navigate вписать страницу случайной игры - тоже находит, но именно в данном решений не находит. Возможно, есть какие-то ошибки в коде, которые я не вижу, или я чего-то не понимаю. Подскажите, пожалуйста

2

Re: AHK: Проблема получения элементов после перехода на другую страницу

Не успевает загрузиться.
Используйте такую проверку:

While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
   Sleep, 20  

3

Re: AHK: Проблема получения элементов после перехода на другую страницу

Malcev, немного позже попробую, но не думаю, что это решит проблему, ибо пробовал и с sleepом.

4

Re: AHK: Проблема получения элементов после перехода на другую страницу

Дада, всё так же, не сработало.

5

Re: AHK: Проблема получения элементов после перехода на другую страницу

У меня работает:

oie := ComObjCreate("InternetExplorer.Application")
oie.Visible := true
oie.Navigate("http://store.steampowered.com/search/?term=" + choice)
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
   Sleep, 20  
oie.document.getElementsByClassName("search_result_row ds_collapse_flag app_impression_tracked")[0].click()
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
   Sleep, 20  
asd := oie.document.getElementsByClassName("game_description_snippet")[0].innerText
MsgBox,,, %asd%

6

Re: AHK: Проблема получения элементов после перехода на другую страницу

Malcev, всё, что я добавил, это

InputBox, choice, Game, Enter game name:

в самое начало, но у меня не работает...

7

Re: AHK: Проблема получения элементов после перехода на другую страницу

Значит делайте выводы.

8

Re: AHK: Проблема получения элементов после перехода на другую страницу

Malcev, а какой вывод сделать? Если даже переменную choice назначить, а не через InputBox спрашивать, то всё равно не работает...

9

Re: AHK: Проблема получения элементов после перехода на другую страницу

У меня работает.
Выводы уж сделайте сами.

oie := ComObjCreate("InternetExplorer.Application")
oie.Visible := true
oie.Navigate("http://store.steampowered.com/search/?term=Dirty+Bomb")
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
   Sleep, 20  
oie.document.getElementsByClassName("search_result_row ds_collapse_flag app_impression_tracked")[0].click()
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
   Sleep, 20  
asd := oie.document.getElementsByClassName("game_description_snippet")[0].innerText
MsgBox,,, %asd%

10

Re: AHK: Проблема получения элементов после перехода на другую страницу

Malcev, полностью скопировал ваш код в отдельный файлики и никаких изменений не сделал - у меня не работает...

11

Re: AHK: Проблема получения элементов после перехода на другую страницу

Все дело в плагинах к IE.
Должен быть установлен либо Adobe Acrobat и соответственно в Current loaded add-ons быть запущенным Adobe PDF Link Helper либо установлен оффис и соответственно в Current loaded add-ons быть запущенным Office Document Cache Handler.