Selenium:避免ElementNotVisibleException异常

2024-09-26 22:13:50 发布

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

我从来没有认真研究过HTML,所以可能我要说的是不对的。你知道吗

在编写selenium代码时,我注意到某些网页上的某些按钮不会重定向到其他页面,但它们会更改第一个页面的结构。据我所知,发生这种情况是因为有一些JavaScript代码对其进行了修改。你知道吗

所以,当我想得到一些在第一页加载时不存在的数据时,我只需要点击正确的按钮序列就可以得到它,对吗?你知道吗

我想加载的页面是https://watch.nba.com/,我想得到的是给定日期的匹配列表。最快的方法是打开日历:

calendary = driver.find_element_by_class_name("calendar-btn")
calendary.click() 

然后单击所选日期:

page = calendary.find_element_by_xpath("//*[contains(text(), '" + time.strftime("%d") + "')]")

page.click()

运行此代码时,出现以下错误:

selenium.common.exceptions.ElementNotVisibleException

我在某个地方读到,问题是页面加载不正确,或者元素不可见/不可单击,因此我尝试了以下方法:

wait = WebDriverWait(driver, 10)

page = wait.until(EC.visibility_of_element_located((By.XPATH, "//*[contains(text(), '" + time.stfrtime("%d") + "')]")))
page.click()

但这次我得到了一个错误:

selenium.common.exceptions.TimeoutException

你能帮我解决这两个问题中的至少一个吗?你知道吗


Tags: 方法代码textbytimedriverseleniumpage
1条回答
网友
1楼 · 发布于 2024-09-26 22:13:50

之所以会出现这种行为,是因为此页面加载了iframe(我可以在主页上看到15个iframe)。单击“日历”按钮后,需要将上下文切换到defaultContext或日历所在的特定iframe。有大量的代码向您展示了如何切换iframe。希望这有帮助。你知道吗

相关问题 更多 >

    热门问题