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

AutoIt + przeglądarka


hernest

Rekomendowane odpowiedzi

Opublikowano

Witam, zmierzam do tego, żeby program wpisywał coś w pole tekstowe w przeglądarce, a następnie klikał button. Bawiłem się z IE.au3, FF.au3 i winhttp, niestety poza otwieraniem przeglądarki/odbieraniu kodu strony na pc nic nie udało mi się osiągnąć.

 

Mam coś takiego:

Usg7m7j.png

Tam gdzie "Bet amount..." ma wpisywać np. 10000, a następnie klikać "8 to 14".

 

Bet amount:

<div class="form-group">
	<input type="text" class="form-control input-lg" placeholder="Bet amount..." id="betAmount">					
</div>

8 to 14:

<div class="panel-heading">
        <button class="btn btn-inverse btn-lg  btn-block betButton" data-lower="8" data-upper="14">8 to 14</button>
</div>


Byłby ktoś w stanie podpowiedzieć/pokazać przykład inny niż na mpc?

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Opublikowano

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

 

 

Coś takiego wyczarowałem:

#include <IE.au3>

$oIE = _IECreate("http://www.csgodouble.com/", false, true, true, true)
$idbet = "betAmount"
$cbet = "20"
$oBet = _IEGetObjById($oIE, $idbet)
sleep(1500)
_IEAction($oBet, "click")

Poza otworzeniem przeglądarki z odpowiednią stroną niczego nie klika, taka sama sytuacja była gdy używałem FF. Gdybyś to robił w JS'ie to spróbuj mnie nakierować/podpowiedzieć, jestem otwarty na wszelkie propozycje ;d

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Opublikowano

@hernest

A po co chcesz klikać pole do wpisywania ilości?? Wartość możesz ustawić bezpośrednio za pomocą funkcji z ostatniego linka.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

@hernest

A po co chcesz klikać pole do wpisywania ilości?? Wartość możesz ustawić bezpośrednio za pomocą funkcji z ostatniego linka.

Używałem funkcję z ostatniego linka, ale nie działała, więc postanowiłem sprawdzić głupim kliknięciem czy zadziała.

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Opublikowano

No przecież działa, nie marudź:

#include <IE.au3>

$oIE = _IECreate("http://www.csgodouble.com/", false, true, true, true)
$idbet = "betAmount"
$cbet = "20"
$oBet = _IEGetObjById($oIE, $idbet)
sleep(1500)
_IEFormElementSetValue ($oBet, $cbet)

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

 

No przecież działa, nie marudź:

#include <IE.au3>

$oIE = _IECreate("http://www.csgodouble.com/", false, true, true, true)
$idbet = "betAmount"
$cbet = "20"
$oBet = _IEGetObjById($oIE, $idbet)
sleep(1500)
_IEFormElementSetValue ($oBet, $cbet)

Niestety nie zapisałem tego z ElementSetValue i nawet nie wiem gdzie błąd robiłem :(

 

Dziękuje bardzo za pomoc z jednym problemem, w między czasie znowu robię jakąś głupotę, której nie widzę.

 

 

Func balance()
   $balans = _IEGetObjById($oIE, "balance")
   GUICtrlSetData ($Label4, $balans)
EndFunc

Balans na stronie wynosi zero, natomiast w labela wskakuje pustka.

<span id="balance">0</span>

@Edit

Dałem sobie radę w ten sposób:

Func balance()
   $balans = _IEGetObjById($oIE, "balance")
   GUICtrlSetData ($Label4, $balans.innerHTML)
EndFunc

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Opublikowano

Nie możesz używać funnkcji przeznaczonych dla windowsowego GUI na elementach html. Masz do tego IE.au3 i tylko tego używaj.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

Nie możesz używać funnkcji przeznaczonych dla windowsowego GUI na elementach html. Masz do tego IE.au3 i tylko tego używaj.

 

Nie do końca rozumiem co konkretnie masz na myśli, ale już sobię z tym poradziłem. Ostatnią rzeczą o jaką zapytam, jest tak jakby złapanie obiektu który nie ma id.

 

 

<button class="btn btn-inverse btn-lg  btn-block betButton" data-lower="8" data-upper="14">8 to 14</button>

Z taka klasa sa jeszcze dwa inne buttony. Znalazłem gdzieś taki kod:

 $tags = $oIE.document.GetElementsByTagName("button")
	  For $tag in $tags
		 $class_value = $tag.GetAttribute("data-upper")
			If $class_value = "14" Then
			   
			EndIf
	  Next

Natomiast w if'ie nie wiem jak mam złapać ten obiekt.

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Opublikowano

Pobierz sobie dla każdego elementu tablicy zawartość text butona za pomocą .innerhtml i porównaj z szukanym tekstem.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

Pobierz sobie dla każdego elementu tablicy zawartość text butona za pomocą .innerhtml i porównaj z szukanym tekstem.

No jo, wydumałem tyle, ale nadal nie wiem jak to złapać ;d

 

Jak mam:

 $tags = $oIE.document.GetElementsByTagName("button")
	  For $tag in $tags
		 $class_value = $tag.GetAttribute("data-upper")
			If $class_value = "14" Then
			   
			EndIf
	  Next

W tego if'a w środku ma być kod do złapania obiektu, tyle, że nie potrafię tego zrobić. W libie IE.au3 po prostu nie widzę funkcji która może mi do tego przysłużyć ;d

 

@Edit

Samo kliknięcie w button udało mi się zrobić, ale co gdybym chciał ten obiekt złapać?

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Opublikowano

ot cała filozofia  :D

#include<ie.au3>


$oIE = _IECreate("http://www.csgodouble.com/")
_IELoadWait($oIE)
$input=_IEGetObjById($oIE,"betAmount")
_IEFormElementSetValue($input,"10000")
$button = _IETagNameGetCollection($oIE, "button")
For $btn in $button
	If $btn.innerHTML=="8 to 14" Then
		$btn.click()
	EndIf
	Next
Opublikowano

 

ot cała filozofia  :D

#include<ie.au3>


$oIE = _IECreate("http://www.csgodouble.com/")
_IELoadWait($oIE)
$input=_IEGetObjById($oIE,"betAmount")
_IEFormElementSetValue($input,"10000")
$button = _IETagNameGetCollection($oIE, "button")
For $btn in $button
	If $btn.innerHTML=="8 to 14" Then
		$btn.click()
	EndIf
	Next

Dziękuję za pomoc :D

 

@topic

Przychodzę z kolejną sprawą.

<span id="banner">CSGODouble rolled 13!</span>

Zmienna $oStatus to ten obiekt "CSGODouble...", w tym wypadku $oStatus.innerHTML przechowuje CSGODouble rolled 13! Potrzebne mi jest teraz to, żeby sprawdzało jaka liczba wypadnie, ogólnie może wypaść od 0 do 14, w przypadku gdy liczba wypadnie od 8 do 14 to wygrywamy, więc kod musi sprawdzać co za liczbę wylosowało. Proszę tylko o funkcję lub nakierowanie na to, jak wydobyć z całego stringa jedną liczbę jedno lub dwucyfrową.

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Opublikowano

na przykład za pomocą wyrażeń regularnych , co do przedziału od 8 do 14 to za pomocą instrukcji warunkowych.

$text="jakiś tekst "&Random(0,14,1)&"jakiś text" ; tekst z którego trzeba wydobyć liczbę
$liczba=StringRegExp($text,"(\d{1,2})",3)[0] ; funkcja z tablicą do obsługi wyrażeń regularnych ze zdefiniowanym wzorcem
MsgBox('','',$liczba) ; rezultat
Opublikowano

 

na przykład za pomocą wyrażeń regularnych , co do przedziału od 8 do 14 to za pomocą instrukcji warunkowych.

$text="jakiś tekst "&Random(0,14,1)&"jakiś text" ; tekst z którego trzeba wydobyć liczbę
$liczba=StringRegExp($text,"(\d{1,2})",3)[0] ; funkcja z tablicą do obsługi wyrażeń regularnych ze zdefiniowanym wzorcem
MsgBox('','',$liczba) ; rezultat
C:\Users\Tomek\Documents\autoit\2.au3(105,57) : ERROR: syntax error
		$liczba=StringRegExp($oStatus.innerHTML,"(\d{1,2})",3)[
		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
$liczba=StringRegExp($oStatus.innerHTML,"(\d{1,2})",3)[0]

@Edit

Func win()
	$stringi = "rolled"
	If StringInStr($oStatus.innerHTML, $stringi) Then
		$liczba=StringRegExp($oStatus.innerHTML,"(\d{1,2})",3)[0]
		GUICtrlSetData ($Label8, $liczba)
	EndIf
EndFunc

@Edit2

Po wywaleniu [0] program kompiluje sie, zaraz sprawdze czy dziala.

@Edit3

Na labela8 nic nie wskakuje nawet jesli nie było żadnego warunku i funkcja po prostu miała wrzucić na $Label8 wartość $liczba

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Opublikowano

z wyrażeniem to był przykład, a nie gotowa linijka do wstawienia byle gdzie, ogólnie funkcja stringregexp zwraca wynik w zmiennej tablicowej więc albo musisz dopisać nr tablicy bezpośrednio albo w tym przypadku do zmiennej $liczba.

Podpowiem tylko ,że aby wydobyć liczbę  musisz do wzorca dopisać poza nawiasem znaki występujące przed i po liczbie wyciąganej z treści strony html.

Opublikowano

z wyrażeniem to był przykład, a nie gotowa linijka do wstawienia byle gdzie, ogólnie funkcja stringregexp zwraca wynik w zmiennej tablicowej więc albo musisz dopisać nr tablicy bezpośrednio albo w tym przypadku do zmiennej $liczba.

Podpowiem tylko ,że aby wydobyć liczbę  musisz do wzorca dopisać poza nawiasem znaki występujące przed i po liczbie wyciąganej z treści strony html.

Póki co wszystko działa, dziękuję za pomoc, prawdopodobnie jeszcze tu wrócę, ale na parę godzin jest spokój xD

gbpuuxX.png

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Opublikowano

@rzogerzg
 

Func status_gry()
	Local $status = GUICtrlRead($Label17)
	$search1 = "Rolling in"
	$search2 = "CSGODouble rolled"
	$search3 = "***ROLLING***"
	$search4 = "Confirming"
	If StringInStr(String($status), $search1) Then
		Global $status_gry = 1 ;rolling in
		GUICtrlSetData ($Label17, String($status_gry))
	ElseIf StringInStr(String($status), $search2) Then
		Global $status_gry = 2 ;rolled
		GUICtrlSetData ($Label17, String($status_gry))
	ElseIf StringInStr(String($status), $search2) Then
		Global $status_gry = 3 ;rolling
		GUICtrlSetData ($Label17, String($status_gry))
	ElseIf StringInStr(String($status), $search2) Then
		Global $status_gry = 4 ;confirming
		GUICtrlSetData ($Label17, String($status_gry))
	EndIf
EndFunc

Jakiś pomysł z jakiego powodu nie działa?

 

@Edit

Podejrzewam, że gdzieś w StringInStr zrobiłem błąd.

@Edit2

Gdyż nic totalnie nie wysyła się do labela17, czyli tak jakby If się nie spełnia.

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Opublikowano

co nie działa ? rozumiem , że zamienia jeden z napisów w zmiennej search na liczbę ze zmiennej status gry ? Jeżeli tak to działa 

#include <GUIConstantsEx.au3>
Global $status_gry[4]

$Form1 = GUICreate("Form1", 398, 162, 192, 124)
$Label17 = GUICtrlCreateLabel("Confirming", 168, 32, 100, 17)
$Button1 = GUICtrlCreateButton("Button1", 120, 72, 137, 25)
GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			status_gry()
	EndSwitch
WEnd


Func status_gry()

	$search1 = "Rolling in"
	$search2 = "CSGODouble rolled"
	$search3 = "***ROLLING***"
	$search4 = "Confirming"

	Switch GUICtrlRead($Label17)
		Case $search1
			$status_gry[0] = 1
			GUICtrlSetData($Label17, $status_gry[0])
		Case $search2
			$status_gry[1] = 2
			GUICtrlSetData($Label17, $status_gry[1])
		Case $search3
			$status_gry[2] = 3
			GUICtrlSetData($Label17, $status_gry[2])
		Case $search4
			$status_gry[3] = 4
			GUICtrlSetData($Label17, $status_gry[3])
	EndSwitch
EndFunc   ;==>status_gry
Opublikowano

 

co nie działa ? rozumiem , że zamienia jeden z napisów w zmiennej search na liczbę ze zmiennej status gry ? Jeżeli tak to działa 

#include <GUIConstantsEx.au3>
Global $status_gry[4]

$Form1 = GUICreate("Form1", 398, 162, 192, 124)
$Label17 = GUICtrlCreateLabel("Confirming", 168, 32, 100, 17)
$Button1 = GUICtrlCreateButton("Button1", 120, 72, 137, 25)
GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			status_gry()
	EndSwitch
WEnd


Func status_gry()

	$search1 = "Rolling in"
	$search2 = "CSGODouble rolled"
	$search3 = "***ROLLING***"
	$search4 = "Confirming"

	Switch GUICtrlRead($Label17)
		Case $search1
			$status_gry[0] = 1
			GUICtrlSetData($Label17, $status_gry[0])
		Case $search2
			$status_gry[1] = 2
			GUICtrlSetData($Label17, $status_gry[1])
		Case $search3
			$status_gry[2] = 3
			GUICtrlSetData($Label17, $status_gry[2])
		Case $search4
			$status_gry[3] = 4
			GUICtrlSetData($Label17, $status_gry[3])
	EndSwitch
EndFunc   ;==>status_gry

 

No w tym przypadku zadziała, ale np. gdy Label17 przechowuje kawałek z Confirming to tam dalej są liczby, dlatego to nie może porównywać $search1 do $Label17, z tego powodu użyłem StringInStr, ale coś nie pykło.

2lw7hol.png


Νεχ ποσσυμ τεχυμ ωιωερε, νεχ σινε τε. 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...