Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Jak kliknąć pierwszy z dwóch przycisków


Rekomendowane odpowiedzi

Opublikowano

Witam mam problem którego nie mogę przeskoczyć.

Korzystam z ie.au3 i mam na stronie internetowej dwa takie same przyciski:

<input type="submit" value="PROCEED" id="button">

 

Chciał bym kliknąć pierwszy od góry. Z góry dziękuję za pomoc.

sygnaturametin2.png

10 postów

50 postów

100 postów

150 postów

200 postów

 

ZBIERAM PLUSIKI +

Opublikowano

Korzystam z ie.au3 i mam na stronie internetowej dwa takie same przyciski:

<input type="submit" value="PROCEED" id="button">

Nie możliwe.

HTML uniemożliwia stosowanie zdublowanych ID

Name może być użyty wielokrotnie dla różnych elementów ale ID jest unikalne.

 

użyj:

$oButton = _IEGetObjById($oIE, 'button')
_IEAction($oButton, 'click')
Opublikowano

Możliwe bez problemu, może być dziesiątki identycznych buttonów ale inna akcja . Odpowiedź wcześniej udzielona, po wylistowaniu wystarczy podać który to button w kolejności 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Niestety wasze porady mi nie pomogły. Nie mogłem posłużyć się funkcją  _IEFormElementGetCollection lub nie działała ona w moim przypadku. W końcu przepisałem body strony tyle, że bez drugiego przycisku. Prymitywnie, ale działa  :lenny:

sygnaturametin2.png

10 postów

50 postów

100 postów

150 postów

200 postów

 

ZBIERAM PLUSIKI +

Opublikowano
$body=_IEBodyReadHTML($handleIE)
FileWrite(@ScriptDir&"/lol.txt",$body)
$lol=FileReadLine(@ScriptDir&"/lol.txt",3)
$ii=3
Do
	$ii=$ii+1
	$lol=$lol&@CRLF&FileReadLine(@ScriptDir&"/lol.txt",$ii)
Until $ii=134
$lol=$lol&@CRLF&'<td><input id="button" type="submit" value="PROCEED" name="helpbutton"></td>'
$ii=135
Do
	$ii=$ii+1
	$lol=$lol&@CRLF&FileReadLine(@ScriptDir&"/lol.txt",$ii)
Until $ii=203
$ii=205
Do
	$ii=$ii+1
	$lol=$lol&@CRLF&FileReadLine(@ScriptDir&"/lol.txt",$ii)
Until $ii=422$

_IEBodyWriteHTML($handleIE,$lol)

$button=_IEGetObjById($handleIE,"button")
_IEAction($button,"click")


W ogóle nie wiedziałem jak się za to zabrać. Zostawiam jedynie kod dla wędrujących w poszukiwaniu rozwiązania. Ps. tak wiem c*****o napisane, ale się śpieszyłem. Jak ktoś się wczyta to będzie wiedział o co chodzi.

sygnaturametin2.png

10 postów

50 postów

100 postów

150 postów

200 postów

 

ZBIERAM PLUSIKI +

Opublikowano

Zawartość lol.txt pozostanie tajemnicą ;D Jednak jest tam po prostu kod strony, a tam gdzie przeskok w $ii to ominięcie drugiego buttona.

sygnaturametin2.png

10 postów

50 postów

100 postów

150 postów

200 postów

 

ZBIERAM PLUSIKI +

Opublikowano

W ten sposób kod wygląda lepiej:

$body = _IEBodyReadHTML($handleIE)
FileWrite(@ScriptDir & "/lol.txt", $body)
$lol = FileReadLine(@ScriptDir & "/lol.txt", 3)
$ii = 3
Do
	$ii = $ii + 1
	$lol = $lol & @CRLF & FileReadLine(@ScriptDir & "/lol.txt", $ii)
Until $ii = 134
$lol = $lol & @CRLF & '<td><input id="button" type="submit" value="PROCEED" name="helpbutton"></td>'
$ii = 135
Do
	$ii = $ii + 1
	$lol = $lol & @CRLF & FileReadLine(@ScriptDir & "/lol.txt", $ii)
Until $ii = 203
$ii = 205
Do
	$ii = $ii + 1
	$lol = $lol & @CRLF & FileReadLine(@ScriptDir & "/lol.txt", $ii)
Until $ii = 422$

_IEBodyWriteHTML($handleIE, $lol)

$button = _IEGetObjById($handleIE, "button")
_IEAction($button, "click")

Używaj TIDY z SciTE4AutoIt3

 

 


Możliwe bez problemu, może być dziesiątki identycznych buttonów ale inna akcja . Odpowiedź wcześniej udzielona, po wylistowaniu wystarczy podać który to button w kolejności 

Pod warunkiem, że każdy ma inny ID lub nie ma go w ogóle.

 

Jako, że podałeś jako przykład:

<input type="submit" value="PROCEED" id="button">

Pisząc że są dwa takie same przyciski, to po prostu stwierdziłem fakt.
Taki był sens mojej wypowiedzi.

 

Jeżeli uważasz że jest inaczej to pokaż OUTERHTML dla jednego i drugiego przycisku.

Opublikowano

Kodu strony nie podam z własnych powodów. Sztuczka polega na przepisaniu body bez przeszkadzających elementów.

 

@1361622928-U485574.pngmLipok specjalnie dla ciebie zrobiłem stronę gdzie są 2 przyciski o id="button".     "Rzeczy niemożliwe spełniam od ręki na cuda trzeba czekać."

http://3667axz980kjsd50.freeoda.com/index.html

 

@Edit mpc psuje linki...   3667axz980kjsd50[kropka]freeoda[kropka]com

sygnaturametin2.png

10 postów

50 postów

100 postów

150 postów

200 postów

 

ZBIERAM PLUSIKI +

Opublikowano

Ciekawe:

https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById

 

id is a case-sensitive string representing the unique ID of the element being sought.

 

http://www.w3schools.com/jsref/met_document_getelementbyid.asp

 

An ID should be unique within a page. However, if more than one element with the specified ID exists, the getElementById() method returns the first element in the source code.

 

Człowiek całe życie się uczy.

Opublikowano

No tak tyle, że trochę to wywraca świat do góry nogami.

 

Wiem co znaczy "should" 

Ciekawe tylko jaką ty wiedzę wyciągnąłeś z tego:

 if more than one element with the specified ID exists, the getElementById() method returns the first element in the source code.

 
bo to oznacza że powinno działać to:
$button = _IEGetObjById($handleIE, "button")
_IEAction($button, "click")
Opublikowano

przeczytaj to:

https://www.w3.org/TR/html5/single-page.html#the-id-attribute

 

oraz

https://www.w3.org/TR/dom/

 

Elements can have an associated unique identifier (ID) and have an associated DOMTokenList object. 

Note: Historically elements could have multiple identifiers e.g. by using the HTML id attribute and a DTD. This specification makes ID a concept of the DOM and allows for only one per element, given by an id attribute.

 

Wynika z tego że stosowanie duplikatów ID jest błędem lub co najmniej złą praktyką a fakt że przeglądarka to obsługuje jest zaszłością.

 

Zresztą kod możesz sprawdzić tu:

https://validator.w3.org/nu/#textarea

 

np:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<p></p>
<input type="submit" value="PROCEED" id="button">
<input type="submit" value="PROCEED" id="button">
</body>
</html>

daje taki rezultat:

 

 

Info: The Content-Type was text/html. Using the HTML parser.

Info: Using the schema for HTML with SVG 1.1, MathML 3.0, RDFa 1.1, and ITS 2.0 support.
Error: Duplicate ID button.
From line 9, column 1; to line 9, column 49
"button">↩<input type="submit" value="PROCEED" id="button">↩</bod
Warning: The first occurrence of ID button was here.
From line 8, column 1; to line 8, column 49
>↩<p></p>↩<input type="submit" value="PROCEED" id="button">↩<inpu

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...