我从未认真研究过HTML,所以我可能会说的不对。
当我编写我的硒代码时,我注意到某些网页上的某些按钮不会重定向到其他网页,但它们会改变第一个网页的结构。根据我的理解,这是因为有一些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
你能帮我解决这两个问题中的至少一个吗?
答案 0 :(得分:1)
您获得此类行为的原因是因为此页面加载了iFrame(我在主页上可以看到15)一旦您单击日历按钮,您将需要将您的上下文切换到defaultContext或者日历所在的特定iframe。有大量的代码可以向您展示如何切换进iframe。希望这会有所帮助。