
Zitat von
0u1law
Hey danke erstmal für deine hilfe! und ich hab es entsprechend probiert aber jetzt bekomme ich folgende fehlermeldung:
Code:
Message: stale element reference: element is not attached to the page document
hab auch versucht das dann auf einem neuen fenster zu öffnen aber vergeblich
hier der code
Code:
benutzer1 = driver.find_elements_by_class_name('name')
for a in benutzer1:
driver.execute_script("window.open('');")
driver.switch_to.window(driver.window_handles[1])
a.click()
driver.close()
bekomme aber besagte fehlermeldung was kann ich da machen ? dachte daran jedesmal wenn ich auf der gewollten seite war kann ich dann eins zurück und die elemente neu laden aber wie mache ich das dann dass ich nicht jedesmal benutzer[0] ansteuere ? sowas wie ein counter oder ?
Normalerweise bedeutet das, dass du Elemente benutzen möchtest, die noch nicht vollständig geladen worden sind oder per Javascript noch geändert wurden. Im Regelfall kann man das verhindern, wenn du einfach auf das Element wartest:
Code:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
benutzer1 = driver.find_elements_by_class_name("name")
#Die 10 steht für die Sekunden bis zum Timeout.
wait = WebDriverWait(driver, 10)
wait.until(EC.staleness_of(benutzer1))
benutzer1 = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, "name")))
benutzer1.send_keys("Jetzt kann man was damit machen")
Mehr dazu erfährst du in der Dokumentation: https://selenium-python.readthedocs.io/waits.html
So müsste das theoretisch funktionieren, aber ist schwer zu sagen, wenn du kein Code postest.