Python Selenium元素NotVisibleException

2024-05-13 07:07:20 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:在解决问题时接受答案。

我试图从以下网页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()

代码应该做什么:

  • 点击上表“SpilTagsüberscht”中的“1”
  • 点击“mehr ZumSpiel”进行第一场比赛
  • 单击页面下半部分的“TeamStatistick”选项卡。

然而,尽管tab TeamStatistick可见,但我还是得到了错误。

我已经非常深入地阅读了stackoverflow上的这个错误,并在最后一行中尝试了以下工作。但是,我得到了TimeoutException。

^{pr2}$

我已经用PhantomJS和Chrome尝试过,但无法修复。我有点困惑,因为我试图点击的标签“TeamStatistick”对我来说总是可见的。我试过如果”teamstats.U可见可用。但事实并非如此。(编辑:现在我尝试了。显示了,并且我得到了一个FALSE)。但是我如何才能显示出来呢?这是可能的吗?)

为此,我将感谢任何有关

  • 如何避免ElementNotVisibleException错误/如何改进代码
  • 如果硒是这类网站的最佳选择,考虑到替代方案是美化组合

谢谢你的支持!这实际上是我的第一篇文章。所以请温柔点;-)


Tags: 代码game编辑bydriver错误elementsfind
1条回答
网友
1楼 · 发布于 2024-05-13 07:07:20

由于目标元素位于页面的不可见部分,您可能需要向下滚动以使其可见:

teamstats = driver.find_elements_by_xpath(XPATH_TEAMSTATS)[0]
time.sleep(.5)
driver.execute_script('arguments[0].scrollIntoView()', teamstats)
teamstats.click()

您也可以尝试以下简单方法向下滚动页面:

^{pr2}$

相关问题 更多 >