编辑:接受了答案,因为它解决了问题本身。
我正在尝试从以下网页link获取数据 为了理解selenium是如何工作的(实际上我对数据不感兴趣。在最后一行我得到 ElementNotVisibleException错误。我的代码如下所示:
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()
代码应该做什么:
但是,虽然标签Teamstatistik可见,但我收到了错误消息。
我已经非常深入地阅读了关于stackoverflow的这个错误,并且还尝试了以下解决最后一行的问题。但是,我确实得到了TimeoutException。
teamstats = WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"XPATH_TEAMSTATS")))
teamstats.click()
我已经尝试过PhantomJS和Chrome,但无法修复此问题。我有点困惑,因为我试图点击的标签“Teamstatistik”对我来说始终可见。我试过,如果“teamstats.is_visible可用。但事实并非如此。(编辑:现在我尝试了.is_displayed,我得到了一个假的。)但是我如何才能显示它?这甚至可能吗?)
为此,我会对
的任何建议表示感谢感谢您的支持!这实际上是我的第一篇文章。所以请温柔; - )
答案 0 :(得分:0)
作为位于页面不可见部分的目标元素,您可能需要向下滚动才能使其可见:
teamstats = driver.find_elements_by_xpath(XPATH_TEAMSTATS)[0]
time.sleep(.5)
driver.execute_script('arguments[0].scrollIntoView()', teamstats)
teamstats.click()
您也可以尝试这种简单的方式向下滚动页面:
teamstats = driver.find_elements_by_xpath(XPATH_TEAMSTATS)[0]
time.sleep(.5)
teamstats.location_once_scrolled_into_view
teamstats.click()