Что нового

[Автоматизация] Нажатие кнопки в IE без ID, NAME, Value.

Dk

Новичок
Сообщения
358
Репутация
2
Хочу сразу сказать я прочитал все похожие темы, к сожалению решения не нашёл.
Проблема в том, что нет ID, Name, Value. (на них оперались все в похожих темах)
Вторая проблeма в том, что эта кнопка (окно) выскакиевает поверх другой странички и тем самым первая страничка остётся "замороженной". Как воспринимает мой скрипт это окно я не знаю, считает ли он чем то новым и не видет это окно или воспринимает его как часть страницы с которй он работал.
Вот HTML код кнопки.

Код:
<button aria-disabled="false" role="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" type="button"><span class="ui-button-text">Bestätigen</span></button>

Для наглядности залил картинку
Мне даже сама форма кнопки не ясна, ето и не новое окно но в то же время и не старое, и не текстовая кнопка, не картинка-кнопка.

А кнопка что сдес https://www.sellermania.de/SellerDE/login просто как пример.
Нужно нажать её делая вид как будто условия такие же что и у кнопки которую я выложил на верху.Мне важно посмотреть как нажимается кнопка без ID,NAME, Value, что бы потом смог приминить этот метод. Oсновную кнопку показать - дать сылку не могу ибо к ней нужет доступ, а пароль и логин разумеется выставить не могу на обозрение)
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
У вашей кнопки есть аттрибуты: aria-disabled,role,class,type
Вот по ним и ищите.
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
не выходит

какую функцию хоть использовать :(
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Как нибудь так
Сперва получаем коллекцию всех кнопок.
Потом просматривает все элементы коллекции в поисках объекта с нужными свойствами.
Когда объект найдет - выполняем с ним действие.
Код:
$oButtons = _IETagNameGetCollection($oIE, 'button')
For $oButton In $oButtons
	If $oButton.classname == "ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" Then
		$oButton.Click()
		ExitLoop
	EndIf
Next
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Я делал уже так , ничего не происходит.
Потому я и написал, что может ли быть так что мой скрипт его не видит??

Смысл скрипта прост,он нажимает на кнопки итд. и потом Всплывает ето окно, Можно ли это окно расценивать как совсем другую страницу?

Вообщем по етой методе не находит
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Может быть. Попробуйте для этого окна выполнить
Код:
_IEAttach
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
что это занчит??
--> IE.au3 Warning from function _IEAttach, $_IEStatus_NoMatch


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

Приведите мне пример нажатия кнопки например сдесь https://www.sellermania.de/SellerDE/login
не используя ID, NAME, Value.
 

Arei

Скриптер
Сообщения
938
Репутация
115
Код:
#include <IE.au3>


$oIE = _IECreate("https://www.sellermania.de/SellerDE/login")

_IEzap($oIE,0,0,"Логин")
_IEzap($oIE,0,1,"Пароль")
_IEclick($oIE,0,2,"Подача запроса")

Func _IEclick($IESET, $form, $index, $name)
	$oForm = _IEFormGetCollection($IESET, $form)
	Do
		$oSubmit = _IEFormElementGetCollection($oForm, $index)
	Until StringStripWS(_IEFormElementGetValue($oSubmit), $index) = $name
	_IEAction($oSubmit, "click")
EndFunc   ;==>_IEclick



Func _IEzap($IESET, $form, $index, $text)
	$oForm = _IEFormGetCollection($IESET, $form)
	$oText = _IEFormElementGetCollection($oForm, $index)
	_IEFormElementSetValue($oText, $text)
EndFunc   ;==>_IEzap

Вот как я смог сделать.


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

Вы не правы.
Код:
Index[2] -> <input type="submit" value="Подача запроса" name="loginFormSubmit">
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
К сожалению не работает

не нажимает
 

Arei

Скриптер
Сообщения
938
Репутация
115
Всё нажимает, для другой страницы будет по другому, т.к индекс уже будет другой.
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Вы использовали Value ?

Нужно что бы была алтернатива, тоесть нажатиe кнопки без Value, ID, Name
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Dk [?]
Нужно что бы была алтернатива, тоесть нажатиe кнопки без Value, ID, Name

Попробуйте:
Код:
#include <IE.au3>

Global $oEmail,$oPass,$oClick
$oIE=_IECreate('https://www.sellermania.de/SellerDE/login')
$oAs=_IETagNameGetCollection($oIE,'a')
$oInputs = _IETagNameGetCollection($oIE,'input')

For $oInput In $oInputs
	If $oInput.Type = 'text' And $oInput.value = '' Then
		$oEmail = $oInput
	EndIf

	If $oInput.Type = 'password' And $oInput.value = '' Then
		$oPass = $oInput
	EndIf
Next

For $oA In $oAs
	If $oA.classname = 'btn_valid_cancel btn_green' And StringInStr($oA.href,'login#') Then
		$oClick = $oA
		ExitLoop
	EndIf
Next

If IsObj($oEmail) Then
	ConsoleWrite("+ Поле ввода Email найдено" & @LF)
	$oEmail.value = 'Нажмем на кнопку через 2 сек.'
Else
	ConsoleWrite("!ERROR: Поле ввода Email не найдено" & @LF)
EndIf

If IsObj($oPass) Then
	ConsoleWrite("+ Поле ввода пароля найдено" & @LF)
	$oPass.value = '656'
Else
	ConsoleWrite("!ERROR: Поле ввода пароля не найдено." & @LF)
EndIf

If IsObj($oClick) Then
	ConsoleWrite("+ Кнопка найдена. Нажимаем через 2 секунды" & @LF)
	Sleep(2000)
	$oClick.Click()
Else
	ConsoleWrite("!ERROR: Кнопка не найдена." & @LF)
EndIf
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
Dk [?]
Нужно что бы была алтернатива, тоесть нажатиe кнопки без Value, ID, Name
Дайте ссылку на такую страницу (если найдете). На https://www.sellermania.de/SellerDE/login есть и ID, и Name, и прочие атрибуты.
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
В етом то и проблема, что похожую не могу найти.

А разве нельзя просто предстваить, что у этой ссылки нет ID, Name, Value и попробывать решить задачу по другому.
Сам код такой кнопки я дал в описании в самом начале темы.

Вот ещё раз


Код:
<button aria-disabled="false" role="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" type="button"><span class="ui-button-text">Bestätigen</span></button>

Просто напишите, как бы Вы нажали такую кнопку.


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

inververs Вы не поняли задачу, мне не нужен ввод логина и пароля.
Мне нужeн пример нажатия кнопки которую я привёл в САМОМ верху fорума в HTML коде.

А сылку я дал для того что бы кнопка была нажата любым другим способом, но только не через ID, NAME, VALUE (то что они присудствуют там я знаю и знаю как с помощью них осуществить нажатие.)
Смысл в том чтобы вообразить, что у кнопки которая в ссылке, такие же параметры (тоест без ID,NAME, VALUE) как и у кнопки которую я написал в HTM Code.
 

Arei

Скриптер
Сообщения
938
Репутация
115
OffTopic:
Извините, но вы не предоставляете нужного примера(что дали код, он не информативный)

Смысл в том чтобы вообразить, что у кнопки которая в ссылке, такие же параметры (тоест без ID,NAME, VALUE) как и у кнопки которую я написал в HTM Code.

МЫ не воображать сюда пришли.



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

Удалите мою благодарность к 14 ответу, т.к поставил по ошибке.
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Сделаем проще.
Всплывающее окно на первом месте , тоесть если я просто нажимаю Enter, то оно подтверждается (выбирать его не нужно/наводить на него)

Можно ли просто отправить подтверждение что то вроде Send (Enter)

Если я просто отсылаю Send((Einter)) то страница обновляется, может есть возможнать послать подтверждение на самy стpаницу, а не на IE Browser, так как я уже сказал , когда окно всплывает, то сама кнопка уже выделена (ни один другой елемент не работает) ПОлучается что если грубо говоря просто отослать подтверждение на сам Html то оно найдёт кнопку, ибо ничего другова там нет.
Или это бред? Логическая ошибка?

Что то вроде ??
_IEAction ($oIE, "click")
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
inververs дал вам правильный код, который находит кнопку по classname, вот код кнопки:
HTML:
<div class="buttonValidationForm">
   <a class="btn_valid_cancel btn_green" id="loginFormSubmit" href="#">
      <span>
         <span>
            <span>Bestätigen</span>
         </span>
      </span>
   </a>
</div>
клик по такой кнопке - это клик по ссылке <a class="btn_valid_cancel btn_green" id="loginFormSubmit" href="#">

Рабочий код:
Код:
#include <IE.au3>

$oIE=_IECreate('https://www.sellermania.de/SellerDE/login', 1)
$oAs=_IETagNameGetCollection($oIE,'a')
$oInputs = _IETagNameGetCollection($oIE,'input')

For $oInput In $oInputs
    If $oInput.Type = 'text' Then
        $oInput.value = '[email protected]'
    EndIf
    If $oInput.Type = 'password' Then
        $oInput.value = '123456'
    EndIf
Next
ConsoleWrite('Поля формы заполнены для того, чтобы увидеть как они очистятся при нажатии кнопки' & @CRLF)
Sleep(5000)

For $oA In $oAs
    If $oA.classname = 'btn_valid_cancel btn_green' And StringInStr($oA.href,'login#') Then
		ConsoleWrite('Найдена кнопка! Жмем!' & @CRLF)
        $oA.click()
        ExitLoop
    EndIf
Next
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
да я понялл уже.
А что мне написать при вот етой кнопки

Код:
<button aria-disabled="false" role="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" type="button"><span class="ui-button-text">Bestätigen</span></button>
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Нужно получить коллекцию элементов с тегом "button", выбрать из нее искомую (по классу) и нажать.
Код:
#include <IE.au3>

$oIE=_IECreate('https://......')
$oBs=_IETagNameGetCollection($oIE,'button')

For $oB In $oBs
    If $oB.classname = 'ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only' Then
        ConsoleWrite('Найдена кнопка! Жмем!' & @CRLF)
        $oB.click()
        ExitLoop
    EndIf
Next
 
Верх