Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Auto klikanie w button
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
czerwon
Witam, potrzebuję waszej pomocy z js.

Próbuję zrobić taki skrypt, który po wejściu na daną stronę automatycznie kliknie na button znajdujący się na tej stronie. Skrypt będzie działał w tampermonkey. Na razie udało mi się zrobić automatyczne zaznaczanie checkboxów i teraz nie mogę sobie poradzić z tym buttonem. Jego kod wygląda tak:

  1. <button type="submit" class="send enterCodeButton">Dalej</button>

I tylko to jest związane z tym buttonem. Nie ma żadnego ID i dlatego mam problem. Macie jakieś pomysły?
magnus
1. Wyciągnąć wszystkie buttony i przeszukać pod kątem class (o ile jest tylko jedna taka kombinacja na buttonach), albo podrzędnego elementu tekstowego z wartością "Dalej".
2. Napisać ten skrypt w casperJS, który ma ładną metodę clickLabel (klika w element z podaną etykietą tekstową, można ograniczyć do konkretnego typu elementu, np. właśnie buttona).
czerwon
Cytat(magnus @ 23.06.2012, 20:50:01 ) *
1. Wyciągnąć wszystkie buttony i przeszukać pod kątem class (o ile jest tylko jedna taka kombinacja na buttonach), albo podrzędnego elementu tekstowego z wartością "Dalej".
2. Napisać ten skrypt w casperJS, który ma ładną metodę clickLabel (klika w element z podaną etykietą tekstową, można ograniczyć do konkretnego typu elementu, np. właśnie buttona).

Ok, dzięki za odpowiedź wink.gif Pokombinuję i zobaczę co z tego wyjdzie smile.gif

@edit, jak uruchomić ten casperJS? Macie może jakąś instrukcję bo ściągnąłem to i phantomjs ale nie wiem jak zacząć co i jak? Mam tylko nadzieję, że skrypty nie są odpalane przez tą konsoletę tylko można je jakoś dodać np do tampermonkey?
Dominator
Kolejna osoba chcąca napisać bota sad.gif
kamil4u
Heh. Dobieranie do tego bibliotek to szczyt lenistwa smile.gif

Skoro już umiesz zaznaczyć checkbox-a to znaczy, że znasz podstawy DOM-u. A jeżeli nie to się z nimi zapoznaj. W skrócie to wyszukiwanie elementu( np. HTML ) w JS.
Np. funkcję getElementById, czy getElementsByTagName itd. - Google powie Ci więcej.

No i teraz robisz bardzo skomplikowaną rzecz smile.gif :
Kod
var element = document.getElementById('formularz'); // dobierasz się do formularz(<form>), właśnie poprzez DOM
element.submit();
czerwon
Cytat(kamil4u @ 23.06.2012, 23:36:27 ) *
Heh. Dobieranie do tego bibliotek to szczyt lenistwa smile.gif

Skoro już umiesz zaznaczyć checkbox-a to znaczy, że znasz podstawy DOM-u. A jeżeli nie to się z nimi zapoznaj. W skrócie to wyszukiwanie elementu( np. HTML ) w JS.
Np. funkcję getElementById, czy getElementsByTagName itd. - Google powie Ci więcej.

No i teraz robisz bardzo skomplikowaną rzecz smile.gif :
Kod
var element = document.getElementById('formularz'); // dobierasz się do formularz(<form>), właśnie poprzez DOM
element.submit();

Dziękuję, poradziłem sobie. Użyłem getElementsByTagName, ponieważ <form> nie był jasno określony i miałem problemy ze znalezieniem nazwy. Jak będę jeszcze czegoś potrzebował to się odezwę. Pozdrawiam.

@edit, w sumie to jeszcze jedno pytanie. Jak można zablokować niektóre elementy na stronie żeby się nie ładowały np. tło i inne obrazki?
kamil4u
Zapewne masz problem, bo długo czekasz na załadowanie formularza, gdyż używasz zdarzenia onload. Zamiast tego użyj zdarzenia uruchamianego zaraz po załadowaniu DOM-u. W chrome to będzie:
Kod
document.addEventListener('DOMContentLoaded', callback, false);
W google szukaj pod "DOMContentLoaded"
Dominator
Jak idą prace nad botem aaevil.gif ?


jQuery

  1. $("button[type='submit']").click();
czerwon
Cytat(kamil4u @ 24.06.2012, 14:59:39 ) *
Zapewne masz problem, bo długo czekasz na załadowanie formularza, gdyż używasz zdarzenia onload. Zamiast tego użyj zdarzenia uruchamianego zaraz po załadowaniu DOM-u. W chrome to będzie:
Kod
document.addEventListener('DOMContentLoaded', callback, false);
W google szukaj pod "DOMContentLoaded"

Szukałem na googlach jak radziłeś jednak żaden kod nie działał. Mógłbyś bardziej opisać to zdarzenie
Kod
document.addEventListener('DOMContentLoaded', callback, false);
? I czy działa ono z Chrome?
kamil4u
http://jsfiddle.net/Lh2BV/ - ew. dodaj więcej obrazków i zobacz co się stanie smile.gif
czerwon
Już chyba rozumiem na czym to polega tylko jeszcze za bardzo nie wiem co podstawić za
Kod
document.addEventListener('DOMContentLoaded', DOM, false);
tak jak w tym przypadku "DOM", ponieważ nie ma nigdzie takiej funkcji na stronie, na której to potrzebuję.

@edit: Już sobie chyba poradziłem. Dla przykładu dodałem do swojego kodu
Kod
function DOM(){
alert("DOM się załadował");
}
Kod
document.addEventListener('DOMContentLoaded', DOM, false);
teni kodzik, z tym że zmieniłem parametry pod kod strony pod który go potrzebowałem i faktycznie zanim cała strona się załadowała alert już się wyświetlał smile.gif czyli chyba wszystko w porządku. Dzięki kamil4u.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.