Что нового

Нажатие на кнопку

Dk

Новичок
Сообщения
358
Репутация
2
Версия AutoIt: 3.3.12.0

Описание:
Здравствуйте.
Перестал работать вот этот скрипт.
Код:
$ocIE = _IECreate('http://www.medimops.de/juergen-kriz-grundkonzepte-der-psychotherapie-gebundene-ausgabe-M03621274510.html')
If Not IsObj($oIE) Then Exit MsgBox(0, '', 'stranica ne otkryta')
$oTag = $oIE.document.querySelector('#fcToBasketTrackingHelp button[value="IN DEN WARENKORB"]')
If Not IsObj($oTag) Then Exit MsgBox(0, '', 'knopka ne najdena')
_IELoadWait($oIE)
Sleep(1000)
$oTag.click()

Этот скрипт открывал страницу и нажимал на кнопку "In den Warenkorb"

Помогите пожалуйста.
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
Вот так работает?
Код:
#include <IE.au3>

$oIE = _IECreate('http://www.medimops.de/juergen-kriz-grundkonzepte-der-psychotherapie-gebundene-ausgabe-M03621274510.html')
If Not IsObj($oIE) Then Exit MsgBox(0, '', 'Ошибка запуска IE')
Sleep(500)

$oButton = $oIE.document.getElementsByClassName("mx-button mx-button-large mx-button-primary")
$oButton.item(0).focus()
Sleep(25)
$oButton.item(0).click()
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
gunter123 сказал(а):
Вот так работает?

У меня появилась следующая проблема.
После того как нажал на кнопку "In den Warenkorb" я хочу нажать "Zur Kasse gehen"

Код:
$oButton = $oIE.document.getElementsByClassName("mx-button mx-button-primary")
$oButton.item(0).focus()
Sleep(25)
$oButton.item(0).click()


Но он нажимает совершенно другую кнопку, я даже не понимаю какую. :'(
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
нажать "Zur Kasse gehen"
Эта кнопка имеет другое название класса, поэтому и кнопка это другая. Попробуйте вот такой вариант:
Код:
#include <IE.au3>

$oIE = _IECreate('http://www.medimops.de/juergen-kriz-grundkonzepte-der-psychotherapie-gebundene-ausgabe-M03621274510.html')
If Not IsObj($oIE) Then Exit MsgBox(0, '', 'Ошибка запуска IE')
Sleep(500)

$aButtons = $oIE.document.getElementsByClassName("mx-button mx-button-large mx-button-primary") ; Класс кнопки "In den Warenkorb"
For $oButton In $aButtons														; Пройдемся по каждому элементу полученной коллекции
   If StringInStr($oButton.innertext, "In den Warenkorb") Then					; Если в тексте кнопки есть "In den Warenkorb"
	  $oButton.focus()															; То кликаем по ней
	  Sleep(25)
	  $oButton.click()
	  Sleep(100)
	  ExitLoop																	; И дальше не ищем
   EndIf
Next

;$oButton.item(0).focus()									; Конечно, можно сразу нажать на первый элемент в коллекции вместо поиска,
;$oButton.item(0).click()									; но лучше поискать кнопку именно с нужным текстом

_IELoadWait($oIE)																; Ждем загрузки
Sleep(500)

$aButtons = $oIE.document.getElementsByClassName("mx-button mx-button-primary") ; Класс кнопки "Zur Kasse gehen"
For $oButton In $aButtons														; Пройдемся по второй коллекции
   $pValue = $oButton.attributes.getNamedItem("value")							; Получаем аттрибут value кнопки, тут .innertext не подойдет
   If IsObj($pValue) Then														; Если аттрибут существует
	  If StringInStr($pValue.nodeValue, "Zur Kasse gehen") Then					; И если в нем есть искомая строка "Zur Kasse gehen"
		 $oButton.focus()
		 Sleep(25)
		 $oButton.click()														; То кликаем
		 ExitLoop																; И выходим из цикла
	  EndIf
   EndIf
Next
UPD. Оказалось, надо просто обновить коллекцию, под второе название класса подходят обе кнопки. Но все же, с поиском по элементам Вы будете уверены, что нажимаете именно на ту кнопку, что вам нужна :whistle:
 
Верх