Python Selenium XPath ändert sich manchmal, sodass nicht das richtige Element auf der Seite ausgewählt wird
Posted: 11 Jan 2025, 06:30
Also verwende ich Selenium, um regelmäßig etwas über eine Website zu buchen. Es ist geplant, die Reservierung am Dienstag für Mittwoch acht Tage später vorzunehmen.
Ich habe das Programm zur Ausführung gebracht, aber es wählt nicht das richtige Zeitfenster aus. Um es kurz zu machen: Der Administrator dessen, was ich planen möchte, geht schon vor dem Öffnen des Terminplaners vorbei und kann Zeitfenster reservieren. Was also passiert, ist die Verschiebung der Zeitfenster auf der Seite, und sobald sich der Planer für mich öffnet, wählt mein Programm ein Zeitfenster aus, an dem ich nicht interessiert bin, d. h. das Zeitfenster, das ich möchte, ist immer noch verfügbar, nur nicht jedes Mal am selben Ort .
Hier ist, was ich verwende, um das Zeitfenster zum Klicken zu identifizieren.
Dies ist das Element, das sich ändert, */a[29]/*. Da sich die Zeitfenster verschieben, kann sich das gewünschte Zeitfenster um 18 Uhr ändern, sodass */a[]/div[1] nicht sinnvoll ist.
Hier ist das Element aktiviert die Seite
Gibt es eine Möglichkeit, die Funktion „find_element“ zu verwenden, um gezielt das Zeitfenster um 18:00 Uhr zu finden?
Ich habe versucht, By.CLASS_NAME zu verwenden aber ich erhalte Fehlermeldungen. Ich vermute, dass mein Programm durch die Identifizierung der Klasse „timeslot-time“ nicht zwischen den verschiedenen Vorkommen dieser Klasse auf der Seite unterscheiden kann. Ganz zu schweigen davon, dass ich nicht sicher bin, wie ich diesen Kurs und das 18-Uhr-Zeitfenster identifizieren soll.
Ich habe das Programm zur Ausführung gebracht, aber es wählt nicht das richtige Zeitfenster aus. Um es kurz zu machen: Der Administrator dessen, was ich planen möchte, geht schon vor dem Öffnen des Terminplaners vorbei und kann Zeitfenster reservieren. Was also passiert, ist die Verschiebung der Zeitfenster auf der Seite, und sobald sich der Planer für mich öffnet, wählt mein Programm ein Zeitfenster aus, an dem ich nicht interessiert bin, d. h. das Zeitfenster, das ich möchte, ist immer noch verfügbar, nur nicht jedes Mal am selben Ort .
Hier ist, was ich verwende, um das Zeitfenster zum Klicken zu identifizieren.
Code: Select all
driver.find_element(By.XPATH, '/html/body/main/div[4]/section/div[4]/div/div/div/div/div/div/div[3]/a[29]/div[1]').click()
Hier ist das Element aktiviert die Seite
Code: Select all
[url=/account/reservations.html?resourceId=ZXhlcnA6MTk3YnI1ODAxOjcwMTU5MjgzNjI1MA==&start=2025-01-18T18:00:00-07:00&duration=30&cancelUrl=aHR0cHM6Ly9teS5saWZldGltZS5saWZlL2NsdWJzL2NvL2NvbG9yYWRvLXNwcmluZ3MvcmVzb3VyY2UtYm9va2luZy5odG1sP3Nwb3J0PVRlbm5pcyUzQSsrSW5kb29yK0NvdXJ0JmNsdWJJZD0xOTcmZGF0ZT0yMDI1LTAxLTE4JnN0YXJ0VGltZT0tMSZkdXJhdGlvbj0zMCZoaWRlTW9kYWw9dHJ1ZQ==]
6:00 PM
[/url]
Ich habe versucht, By.CLASS_NAME zu verwenden aber ich erhalte Fehlermeldungen. Ich vermute, dass mein Programm durch die Identifizierung der Klasse „timeslot-time“ nicht zwischen den verschiedenen Vorkommen dieser Klasse auf der Seite unterscheiden kann. Ganz zu schweigen davon, dass ich nicht sicher bin, wie ich diesen Kurs und das 18-Uhr-Zeitfenster identifizieren soll.