Seite 1 von 1

Python mit Selenium, custom Elemente werden nicht gefunden?

Verfasst: Freitag 15. Dezember 2023, 01:08
von bernd13
Hallo,
ich habe ein kleines Problem im Umgang mit Selenium+Python:
Ich will von einer Seite bestimmte custom Elemente raussuchen und Diese der Reihe nach anklicken.

Der relevante Part meines Codes sieht aktuell so aus:

Code: Alles auswählen

import os    
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, NoSuchElementException  # Import NoSuchElementException

#vielerlei options Anpassungen

driver = webdriver.Chrome(options=options)

EintraegeLinks = driver.find_elements(By.XPATH, '//jb-job-listen-eintrag')
Die letzte Zeile ist Die, die mir Probleme macht.
Ich WEIß TOTSICHER dass rund 25 passende Elemente auf der Seite sind.
Sind halt keine div's oder sowas Handelsübliches.
Aber wenn ich bspw. von Hand

Code: Alles auswählen

document.querySelectorAll("jb-job-listen-eintrag")
in der Konsole eingebe, wird mir shcön eine NodeList mit den 25 Nodes geliefert.

Nur die Variante über Selenium findet gar nichts, die zurückgelieferte Lsite hat Länge 0!
Auch

Code: Alles auswählen

driver.find_element(...)
wirft mir einen NoSuchElementError.

Ich habe auch schon alle möglichen Varianten wie

Code: Alles auswählen

EintraegeLinks = driver.find_elements(By.TAG_NAME, "jb-job-listen-eintrag")
oder
EintraegeLinks = driver.find_elements("css selector", "jb-job-listen-eintrag")
versucht, aber immer kriege ich eine Liste mit 0 Elementen!
(Die letzte Variante habe ich für andere Dom Suchereien immer benutzt und sie hat so immer funktioniert! Gleichzeitig kann der css selector aber auch nicht falsch sein, sonst würde er in der Konsole ja auch nicht einwandfrei klappen!)

Ich bin am Verzweifeln, Befehl müsste richtig sein, der css selector auch, Elemente ist ohne jeden Zweifel auch da
(Ich habe sprichwörtlich, mit input() unterbrochen, getestet konsolen manuell die Elemente zu finden, klappte direkt vor und nach dem Selenium Befehl, sie sind also totsicher im richtigen Moment da!)

Was könnte ich falsch machen?
Es ist auch kein shadowroot im Weg oder so.

Nur benutzt halt die Seite viele custom Elemente, was aber normal kein Problem sein sollte, oder?
Oder wie gehe ich mit custom Elementen um, scheinbar klappt bei denen ja die Standard Selenium Syntax nicht? :-/


PS:
So sieht übrigens eine der Nodes aus, die ich suche:

Code: Alles auswählen

<jb-job-listen-eintrag _ngcontent-serverapp-c1131953983="" _nghost-serverapp-c1010496867="">

Re: Python mit Selenium, custom Elemente werden nicht gefunden?

Verfasst: Freitag 15. Dezember 2023, 16:28
von derElch
Ich kenne mich bei Selenium nicht aus, aber nach einem kurzen Blick in die Doku (https://selenium-python.readthedocs.io/ ... ments.html) wäre ich eher für 4.5 byTAG Name?

Re: Python mit Selenium, custom Elemente werden nicht gefunden?

Verfasst: Freitag 15. Dezember 2023, 16:51
von __blackjack__
@bernd13: Kann es sein, dass die dynamisch nachgeladen werden und einfach nur *noch* nicht da sind wenn Du sie abfragst‽

Re: Python mit Selenium, custom Elemente werden nicht gefunden?

Verfasst: Freitag 15. Dezember 2023, 18:19
von snafu
Zum Thema Warten mit Selenium gibt es hier einige Infos:
https://www.selenium.dev/documentation/webdriver/waits/