BEARBEITEN: akzeptierte Antwort, da es das Problem selbst löste.Python Selen - ElementNotVisibleException
Ich versuche, Daten aus der folgenden Webseite link , um zu ergreifen, um zu verstehen, wie Selen Werke (eigentlich bin ich nicht daran interessiert, die Daten auf der letzten Zeile erhalte ich eine ElementNotVisibleException Fehler. Mein Code sieht wie folgt aus :
path = mypath
url = 'http://www.bundesliga.de/de/liga/statistik/spieltag/'
#### SCRIPT TO TEST SELENIUM
#### (0) Load driver
driver = webdriver.PhantomJS(path)
driver.set_window_size(1120, 550)
driver.get(url)
#### (1) Define XPATHs
XPATH_MATCHDAY = '//*[contains(@class, "has-data")]'
XPATH_GAMES = "//*[contains(text(), 'mehr zum Spiel')]"
XPATH_TEAMSTATS = "//span[contains(text(), 'Teamstatistik')]"
### (2) Click links to Teamstats
# Select Matchday 1
matchday = driver.find_elements_by_xpath(XPATH_MATCHDAY)[0]
matchday.click()
# Select game one
game = driver.find_elements_by_xpath(XPATH_GAMES)[0]
game.click()
# Select teamstats tab (bottom of page)
teamstats = driver.find_elements_by_xpath(XPATH_TEAMSTATS)[0]
time.sleep(.5)
teamstats.click()
Was ist der Code tun soll:
- Klick auf "1" in der oberen Tabelle "Spieltagsübersicht"
- klicken Sie auf "mehr zum Spiel" für das erste Spiel
- klicken Sie auf den Reiter "Teamstatistik" auf der zweiten Hälfte der Seite.
Obwohl Tab Teamstatistik sichtbar ist, erhalte ich den Fehler.
Ich habe diesen Fehler auf stackoverflow ziemlich intensiv gelesen und auch die folgende Arbeit für die letzten Zeilen ausprobiert. Allerdings bekomme ich dann eine TimeoutException.
teamstats = WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"XPATH_TEAMSTATS")))
teamstats.click()
Ich habe dies mit PhantomJS und Chrome versucht, aber war nicht in der Lage, dies zu beheben. Ich bin etwas verwirrt, weil der Reiter "Teamstatistik", auf den ich klicken möchte, für mich immer sichtbar ist. Ich habe versucht, wenn „teamstats.is_visible vorhanden ist, aber es ist nicht .. (EDIT: Jetzt habe ich versucht .is_displayed und ich bekomme ein FALSCH) Aber wie bekomme ich es angezeigt ist dies überhaupt möglich)
.?zu diesem Zweck würde ich dankbar für jeden Hinweis auf
- sein, wie die ElementNotVisibleException Fehler vermeiden/wie Sie den Code
- zu verbessern, wenn Selen ist für diese Art von Website beste Wahl, um die Alternativen unter Berücksichtigung ist BeautifulSoup
Vielen Dank für Ihre Unterstützung! Das ist eigentlich mein erster Beitrag. Also bitte sanft sein ;-)
Danke für die schnelle Antwort. Ich habe diesen Beitrag gesehen, aber mein Verständnis ist, dass Workaround in Javascrip ist. Also verstehe nicht, wie das in Python funktionieren würde (wenn überhaupt ...). – FredMaster
Übrigens ist es Java, aber die häufigsten Gründe für 'ElementNotVisibleException' sind dort aufgeführt, überprüfen Sie sie und sehen Sie, welche Ihnen gehört. – Arman
Ich habe versucht, is_displayed und ich bekomme "FALSE" als Antwort. Also danke dafür. Ich weiß aber immer noch nicht, wie ich es beheben kann. – FredMaster