Próbuję znaleźć element na stronie internetowejużywając selenu. kiedy „klikam prawym przyciskiem myszy” na elemencie internetowym i sprawdzam, mogę znaleźć kod HTML w konsoli. Jednak gdy skopiuję ścieżkę xpath tego samego elementu z konsoli i spróbuję go uruchomić w ścieżce ogniowej, pojawi się komunikat „Brak pasujących węzłów”. Dlaczego tak jest i jak mogę to naprawić?
Oto HTML elementu.
<input id="mobile" type="text" onchange="javascript:dispLocMob(this);
"onkeydown="javascript:dispLocMob(this);
"onkeyup="javascript:dispLocMob(this);" value="" maxlength=
"10" placeholder="Mobile Number" name="mobile">
I to właśnie robię:
receiverMobileElement = browser.find_element_by_xpath("//*[@id="mobile"]")
Proszę pomóż.
Odpowiedzi:
0 dla odpowiedzi № 1Dlaczego warto używać xpath
kiedy możesz znaleźć element według wyjątkowy id
?
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://example.com")
target_element = browser.find_element_by_id("mobile")
0 dla odpowiedzi nr 2
Zawsze mówię „śrubokręt”, użyj konsoli Chrome…
Wygląda na to, że najlepszym sposobem uzyskania tego konkretnego elementu byłaby jedna z dwóch następujących opcji (biorąc pod uwagę, że „id = mobile” jest unikalny) ..
By.cssSelector("#mobile");
By.xpath("//input[@id = "mobile"]");
Aby użyć konsoli chrome ->
- Uruchom Chrome
- Kliknij prawym przyciskiem myszy i sprawdź swój element.
- Powinieneś zobaczyć kod HTML i konsolę poniżej. (Jeśli nie widzisz konsoli, kliknij trzy pionowe kropki i wybierz „Pokaż konsolę”
- Teraz możesz robić niesamowite rzeczy! Możesz wyszukać elementy, które próbujesz zidentyfikować i sprawdzić, czy można je znaleźć. na przykład, aby sprawdzić, czy By.cssSelector („# mobile”); zadziała, wpisz to
document.querySelectorAll („# mobile”)
dla xpath wpisz to
$ xBy.xpath ("// input [@id =" mobile "]");
Po prostu sugestia ... nie przejmuj się firebugem, jeśli twój kod działa i poważnie spróbuj w ten sposób w chrome !!