Selenium elements mit xpath finden?
Selenium elements mit path Hallo, ich würde gerne die letzte Zahl aus dem letzten span rausnehmen. Das dieser nur eine gemeinsame Klass hat müsste der ja mit dem Xpath definiert werden oder.Wäre das dann:
data2 = driver.find_element(By.XPATH, "/div/@class=default-label-box/span/@key=MA[0]Series")
Kannst du vielleicht ein Beispiel geben?
Hab alles geschickt
3 Antworten
Mit // am Anfang kannst du relative Pfade angeben. In deinem Fall kannst du das auch so schreiben:
//span[@class="default-label-box"][@key="M[0]Series"]/text()
Den XPath zu verwenden, ist nur eine von vielen Möglichkeiten. Auch mit CSS-Selektoren kommst du zu einem Ergebnis.
span_element = driver.find_element(By.CSS_SELECTOR, ".chart-title-indicator-container > .default-label-box:last-child")
span_text = span_element.get_attribute("innerText")
Die letzte Zahl kannst du mit einer Division abspalten.
try:
number = int(span_text)
last_number = number % 10
except ValueError:
print("No valid number")
Er zeigt mir immer 1,80% an. Es funktioniert xpath weder css
Mit Elements gibt er mir jetzt das Zeichen für eine Liste[ ]
Ja, wie gesagt (und der Name ist da auch schon eindeutig), liefert find_elements eine Liste. Suche in der nach deinem Element.
Brauche ich überhaupt span_text?
Oben schreibst du, du möchtest den Text (die Zahl) auslesen. Also ja.
Dann musst du das escapen:
//span[@class=\"default-label-box\"][@key=\"M[0]Series\"]/text()
data2 = driver.find_element(By.XPATH, "//span[@class=\"default-label-box\"][@key=\"M[0]Series\"]/text()")
Wenn du so meinst, klappt es nicht
Oh, du musst das /text() am Ende weglassen, du suchst ja nach dem Element
Das ist es leider auch nicht, naja ich guck mal weiter. Danke trotzdem
Muss dass ins Klammern sein? Weil er sonst die default-label-box und M[0]Series als Fehler anstreicht, da diese schon in den Anfürhungszeichen sind