Seite 1 von 1
Python Selenium find_element_by
Verfasst: Montag 2. August 2021, 13:05
von nino_
Hallo,
wie kann ich mit der driver.find_element_by_... funktion nach, aus dem Quelltext <input type="checkbox", suchen und diese anklicken?
Danke <3
Re: Python Selenium find_element_by
Verfasst: Montag 2. August 2021, 13:26
von rogerb
@nino_,
Zum finden von Elementen gibt es eine ganze Reihe von Funktionen.
https://selenium-python.readthedocs.io/ ... ments.html
Da du hier nur den "input" Tag hast, würde wahrscheinlich
'find_element_by_tag_name' oder 'find_elements_by_tag_name'
geeignet sein.
Einmal bekommst du das erste "input" element und einmal bekommst du eine Lister aller "input" elemente.
Es währe besser wenn du noch eine "id" oder "class" oder "name" hättest um das gewünschte Element zu identifizieren.
Re: Python Selenium find_element_by
Verfasst: Montag 2. August 2021, 13:46
von __blackjack__
Oder erst ein übergeordnetes Element mit einem solchen Attribut und von da aus dann weitersuchen.
Re: Python Selenium find_element_by
Verfasst: Dienstag 3. August 2021, 09:59
von nino_
Danke für die Antworten,
von dem Element habe ich folgendes:
<input type="checkbox" value="43060387" class="vehicle_checkbox" id="vehicle_checkbox_43060387" name="vehicle_ids[]"
Es bleibt jedoch nur type, class, und name gleich.
Value und id verändern sich jedesmal.
Und über den Xpath kommt auch immer nur "no such element: Unable to locate element" ...
Was könnte ich stattdessen schreiben?
Re: Python Selenium find_element_by
Verfasst: Dienstag 3. August 2021, 10:03
von __deets__
Ohne den Quelltext der Seite zu sehen, kann man das nicht beurteilen.
Re: Python Selenium find_element_by
Verfasst: Dienstag 3. August 2021, 10:53
von rogerb
@nino_,
über xpath könnte so etwas funktionieren:
Code: Alles auswählen
driver.find_element_by_xpath("//input[contains(@id, 'vehicle_checkbox_')]")
Also wenn man davon ausgeht, dass zumindest "vehicle_checkbox_" immer vorkommt und sich nur die Zahlenkolonne ändert.
Ansonsten, wie von __blackjack__ vorgeschlagen, auf das übergeordnete element, gehen. Das dürfte ein (hoffentlich eindeutiges) "form" oder "div" sein. Dann über die darunterliegenden "inputs" iterieren.
Re: Python Selenium find_element_by
Verfasst: Samstag 7. August 2021, 11:23
von nino_
Ich kann den Code leider nicht kopieren... Kann ich hier ein Bild als Antwort irgendwie anhängen?
Re: Python Selenium find_element_by
Verfasst: Samstag 7. August 2021, 11:44
von rogerb
@nino_,
Du kannst ein Bild verlinken, aber das ist nicht optimal.
Warum kannst du den Code nicht kopieren?
Notfalls kopiere einfach den wichtigsten Teil.
Re: Python Selenium find_element_by
Verfasst: Samstag 7. August 2021, 11:56
von __deets__
Wenn Bild, dann bei einem Bild-Hoster hochladen (imgur zb), und dann den Link *auf das Bild*, nicht auf die imgur-Seite, in ein [ img ]-Tag packen.
Re: Python Selenium find_element_by
Verfasst: Samstag 7. August 2021, 12:30
von nino_
Also hier das Bild: [
https://postimg.cc/CzWFKD53]
Ziel ist es das Selenium die Checkbox, also die drei grau-hinterlegten Zeilen erkennt, und anklickt...
Danke für euere Hilfe, so leicht wie es auf den ersten Blick vielleicht erscheint ist es nicht

Re: Python Selenium find_element_by
Verfasst: Samstag 7. August 2021, 13:18
von Sirius3
Wo ist das Problem, diesen Abschnitt als Text hier ins Forum zu kopieren?
Und sowohl der Vorschlag von rogerb als auch von __blackjack__ sind mögliche Lösungen.
Warum probierst Du das nicht einfach aus?
Re: Python Selenium find_element_by
Verfasst: Samstag 7. August 2021, 13:45
von nino_
Ich die vorgeschlagen Lösungen probiert funktionieren nur nicht so ganz. D. H. Die Checkbox wird nicht angeklickt

Re: Python Selenium find_element_by
Verfasst: Samstag 7. August 2021, 13:56
von Sirius3
Was hast Du konkret probiert?
Re: Python Selenium find_element_by
Verfasst: Samstag 7. August 2021, 16:28
von nino_
Mehrere dinge, hab nur die zwei hier gespeichert.. Funktionieren jedoch nicht

driver.find_element_by_xpath("/html/body/div[1]/div[4]/div[2]/form[2]/div[4]/div/div[8]/table/tbody/tr[1]/td[1]").click()
driver.find_element_by_xpath("//input[contains(@id, 'vehicle_checkbox_')]").click()
Oben findest du den Link zum Screenshot, wenn du mir helfen möchtest

Re: Python Selenium find_element_by
Verfasst: Samstag 7. August 2021, 16:49
von nino_
Im Terminal gibt er mir das hier aus:
...
Traceback (most recent call last):
File "c:\Users\Nino\OneDrive\Desktop\MyVSCode\main.py", line 62, in <module>
SchnellstesEinsatzmittel = driver.find_element_by_xpath("//input[contains(@id, 'vehicle_checkbox_')]").click()
File "D:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "D:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "D:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "D:\Python\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//input[contains(@id, 'vehicle_checkbox_')]"}
(Session info: chrome=92.0.4515.131)
Re: Python Selenium find_element_by
Verfasst: Samstag 7. August 2021, 21:52
von rogerb
@nino_, die xpath Suche scheint mir richtig.
Hast du es mal mit einem übergeordneten Element versucht?
Kannst du deinen Code posten?