/ / Lokalizowanie elementu sieci za pomocą selenu w pythonie - python, selen, xpath

Lokalizowanie elementu sieci web przy użyciu selenu w Pythonie - python, selen, xpath

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 № 1

Dlaczego 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 ->

  1. Uruchom Chrome
  2. Kliknij prawym przyciskiem myszy i sprawdź swój element.
  3. Powinieneś zobaczyć kod HTML i konsolę poniżej. (Jeśli nie widzisz konsoli, kliknij trzy pionowe kropki i wybierz „Pokaż konsolę”
  4. 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 !!