Python Button mittels zwei Attribute finden

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
nino_
User
Beiträge: 17
Registriert: Sonntag 1. August 2021, 17:38

Moin,

wie kann ich in python/selenium einen Button finden, der jedes mal wenn ich die Seite neu lade, eins runterzählt bis er " 0" drinnen stehen hat.
Den Button finde ich mit:

driver.find_element_by_id("mission_next_mission_btn").click()

Ich will nun aber diesen Spezifischen Button finden wenn er " 0" im text stehen hat...


Auszug aus dem Quelltext der Seite:
►<a href="/missions/2094750610" class="btn btn-fadeout btn-sm btn-success navbar-btn" id="mission_previous_mission_btn" title="Vorheriger Einsatz">…</a>
▼<a href="#" class="btn btn-fadeout btn-sm btn-default navbar-btn" id="mission_next_mission_btn" title="Nächster Einsatz">
►<span class="glyphicon glyphicon-arrow-right">…</span>
" 0"


P.S.
Der Button hat eine grüne Farbe wenn seine zahl >0 ist.
Sobald sie 0 ist, ist der Button weiß/grau

Danke :)
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@nino,

mit driver.navigate().refresh() kannst du die Seite neu laden.
Dann kannst du jedesmal den Button finden und sein text-attribut auslesen.
Das kannst du dann auf "0" prüfen.
nino_
User
Beiträge: 17
Registriert: Sonntag 1. August 2021, 17:38

Aber wie genau kann ich die farbe eines webelements mit einer bestimmten Farbe zb. grün vergleichen?
buttonColor = driver.find_element_by_id("mission_next_mission_btn")
print(buttonColor.value_of_css_property('background-color'))
while buttonColor = rgba(92, 184, 92, 1):
??

Danke.
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Der Button hat seine Farbe aufgrund seiner Klasse. Das dort sieht mir nach Bootstrap aus. Du kannst also feststellen, dass der Button grün ist, wenn `class` btn-success enthält. Die Farbe selbst zu vergleichen halte ich da für eher ungeeignet, weil die sich ja mit unterschiedlichen Stylings ändern kann. Oder geht es dir darum wirklich unbedingt die Farbe abzugleichen?
nino_
User
Beiträge: 17
Registriert: Sonntag 1. August 2021, 17:38

Danke für deine Antwort @einfachTobi !

Einfach gesagt, möchte ich den Button vergleichen mit der Farbe grün (rgba(92, 184, 92, 1)).
Wenn das der fall ist, soll es einfach weiter machen
Wenn das nicht zutrifft und der Button zb. weiß ist (255,255,255) dann soll es "abbrechen"
Nur bring ich das in keine sinnvolle Reihenfolge in Python -.-


Man könnte auch den Text im Button vergleichen, ob dieser größer 0 ist.
... Wie im Quelltext oben genannt, nur fehlt mir da ich irgendwie der Bezug da dort kein Attribut o. ä. vorhanden ist -.-
Das mit der null zu vergleichen könnte leichter sein...
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich denke du hast einfachTobi nicht verstanden. Der Button ist gruen, weil er eine bestimmte Klasse hat. btn-success, um genau zu sein. Du musst also einfach nur dein Auswahlkriterum um diese Klasse erweitern, und schon bekommst du nur dann einen Button zurueck, wenn er nicht nur vorhanden, sondern auch noch gruen ist. Oder du holst ihn dir wie bisher, aber schaust eben, ob btn-success in der Klasse ist.

Dass diese Klasse auch noch gruen ist... ja mei. Ist doch egal.
Antworten