Python mit Selenium, custom Elemente werden nicht gefunden?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bernd13
User
Beiträge: 26
Registriert: Sonntag 25. Juni 2023, 11:13

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="">
derElch
User
Beiträge: 33
Registriert: Sonntag 25. Februar 2018, 13:14

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?
Benutzeravatar
__blackjack__
User
Beiträge: 13238
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@bernd13: Kann es sein, dass die dynamisch nachgeladen werden und einfach nur *noch* nicht da sind wenn Du sie abfragst‽
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Benutzeravatar
snafu
User
Beiträge: 6750
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Zum Thema Warten mit Selenium gibt es hier einige Infos:
https://www.selenium.dev/documentation/webdriver/waits/
Antworten