Wpis z mikrobloga

Nie ogarniam tego O_O
Nie mogę przez googla cookies przejść...

https://pastebin.pl/view/d82c7db0

Próbowałem na różne sposoby, chyba jestem jakąś pierdołą :(

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//form//span[@class='RveJvd snByac']"}
(Session info: chrome=85.0.4183.83)

#selenium
  • 10
spróbowałem tym:

WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//form//span[@class='RveJvd snByac']"))
)

też nie działa. Wait na 20 sekund, też nic. Chyba, że lepiej wziąć się za naukę na mniej popularnych stronach :P
@zuligarson:
Google źle się nadaje do nauki, bo ma różne mechanizmy przeciwdziałające zabawie w automaty u nich.
Tutaj samo czekanie nie pomoże, bo ten element początkowo w ogóle nie istnieje w DOMie (nie wiem na jakiej zasadzie jest wyświetlany), dopiero jak robię inspect to pojawia się iframe z tym elementem (do iframe też nie dostaniesz się od razu, musisz do niego przejść najpierw).
via Wykop Mobilny (Android)
  • 0
@venomik: dzieki za pomoc. Jestem dość nowy w selenium i szukam rozwiązań napotkanych problemów, żeby sie uczyć. Natomiast to mnie przerosło i chyba słusznie. Biorę inną stronę na celownik.

Chyba, że przyszło mi jeszcze do głowy, wgrać cookies jakoś, bo na zwykłej przeglądarce to jest zapamiętywane i nie wyświetla sie pytanie za każdym razem.

Da się coś takiego zrobić? :)
@zuligarson:
1. Źle Ci wyżej napisałem. iframe istnieje od początku załadowania strony, wobec czego spokojnie możesz to ogarnąć tutaj. Ten xpath z którego korzystasz do znalezienia elementu działa wewnątrz iframe.
Kliknij prawym na element, wybierz 'inspect' i patrz sobie element po elemencie w górę drzewa DOM dokąd Ciebie to zaprowadzi.
A zaprowadzi Ciebie do elementu typu iframe. Nie możesz z tego, co znajduje się wewnątrz iframe, korzystać od razu - bo
@zuligarson:
Precyzując, żebyś dobrze zrozumiał.
iframe to jakby strona osadzona w stronie. Część, która ma własną strukturę DOM. W momencie gdy selenium otwiera stronę i ma znaleźć element - to szuka w aktualnej strukturze. Tutaj takiego elementu nie ma, dlatego selenium tego elementu nie znajduje.
Gdy sobie kopiujesz xpath poprzez 'copy xpath' albo 'copy full xpath' w przeglądarce - to oczywiście kopiowana jest ścieżka wewnątrz strony, na której ten element jest.