[FIXED] Scraping von SVG-Daten nach CSS-Selektor und ID (Selenium)

Ausgabe

Ich möchte ein Etikett von einer SVG-Datei abkratzen, die nur mit einem Mauszeiger ankommt. Ich arbeite mit diesem Link für die Daten, die mit der Erweiterungsschaltfläche [+] rechts in jeder Tabellenzeile enthalten sind. Wenn Sie auf [+] Erweitern drücken, wird eine SVG-Tabelle angezeigt, die Elemente anzeigt, die Elemente enthalten. Wenn Sie den Mauszeiger auf jedes der Elemente bewegen, wird ein Element namens „Kapazitätsauswirkung“ mit einem Wert für jeden Balken angezeigt. Diese Werte sind die Werte, die ich kratzen möchte.

Siehe Screenshot unten.

Geben Sie hier die Bildbeschreibung ein

Bisher ist mein Code erfolgreich darin, jede der [+]-Erweitern-Schaltflächen zu öffnen und die Polygone zu identifizieren, aber ich kann weder mit XPATH- noch mit CSS-Selektoren zu den Beschriftungen gelangen. Siehe Code unten.


driver.get(url)
table_button_xpath = "//table[@class='data-view-table redispatching dataTable']//tr//td[@class = 'button-column']//a[@class='openIcon pre-table-button operation-detail-expand small-button ui-button-light ui-button ui-widget ui-corner-all ui-button-text-only']"

driver.find_element(By.ID, "close-button").click()
driver.find_element(By.ID, "cookieconsent-button").click()
    
# open up all the "+" buttons
table_buttons = driver.find_element(By.XPATH, table_button_xpath)
        
for i in list(range(1, 10)):
        
    driver.find_element(By.XPATH, table_button_xpath).click()
        
# find all the polygons
polygons = driver.find_elements(By.TAG_NAME, 'path')
    
label_xpath = "//*[name()='svg']//*[name()='g' and @id = 'ballons')]//*[name()='g']//*[name()='tspan']"
    
for polygon in polygons :
        
    action.move_to_element(polygon)
        
    labels_by_xpath = driver.find_elements(By.XPATH, label_xpath)
    labels_by_css_selector = driver.find_elements(By.CSS_SELECTOR, "svg>#ballons>g>text>tspan")
    

Sowohl labels_by_xpath als auch labels_by_css_selector geben eine Liste mit 0 Elementen zurück. Ich habe viele Versionen sowohl des XPath- als auch des CSS-Selektor-Ansatzes ausprobiert, zusammen mit der Verwendung von WebDriverWait, aber ich kann es nicht dazu bringen, die Kapazitätsauswirkungswerte zurückzugeben.

Der HTML-Screenshot wird auch unten kopiert (zur Verdeutlichung, die Zahl, die ich abkratzen muss, ist der Text “50” im Tag.

Geben Sie hier die Bildbeschreibung ein

Jede Hilfe ist willkommen! Danke, Sofie

Lösung

Die Lösung für Ihr Problem ist der Locator. Hier ist der aktualisierte Locator, um das gewünschte Element auszuwählen.

CSS-Selektor:

svg>[id^='balloons']>g:nth-child(2)>text:nth-child(2)>tspan

Versuchen Sie dies, um das Element Kapazität 50 zu erhalten


Beantwortet von –
Rohit Pratap


Antwort geprüft von –
Candace Johnson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like