Beim Web-Scraping dynamischer HTML-Seiten wird WebDriverWait mit EC.presence_of_element_located verwendet () ermöglicht es uns, auf das Erscheinen eines bestimmten Elements zu warten Daten abrufen. Normalerweise spezifizieren wir Elemente anhand ihrer IDs. In bestimmten Szenarien müssen wir jedoch möglicherweise stattdessen Elemente anhand ihrer Klassen angeben.
Der ursprüngliche Code versucht, ein Element anhand seiner Klasse zu lokalisieren, indem er EC.presence_of_element_located((By.class, "ng-binding ng- Scope")):
element = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))
Diese Syntax funktioniert jedoch nicht, da sie nicht den Locator-Syntaxregeln von WebDriver entspricht. Die By.class-Methode unterstützt nicht mehrere Klassennamen als Argument.
Um dieses Problem zu beheben, können wir die Funktion „present_of_element_located(“ verwenden. )-Funktion zusammen mit By.CSS_SELECTOR oder By.XPATH, um sowohl die ID als auch die Klassenattribute anzugeben folgt:
Verwendung von CSS_SELECTOR:
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".ng-binding.ng-scope#tabla_evolucion")))
Verwendung von XPATH:
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//*[@class='ng-binding ng-scope' and @id='tabla_evolucion']")))
Durch Kombination von ID und Klasse Attribute können wir das gewünschte Element präzise lokalisieren, auch wenn nur die Klasse angegeben ist.
Das obige ist der detaillierte Inhalt vonWie verwende ich EC.presence_of_element_located() von Selenium mit mehreren Klassennamen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!