使用selenium获取不到#document里面的网页内容的问题解决

bet3365也可以 2025-08-26 03:12:45 阅读: 3319

一、问题出现的原因

网页中有一种节点叫做iframe,相当于外部页面的子页面,它的结构和外部页面的结构是一致的。当我们使用selenium去模拟浏览器进行操作时,是默认的在父级Frame里面进行操作,但是页面中还存在子Frame,这时候是获取不到子Frame里面的节点的,也就表现在虽然在页面中有数据内容,但是使用模拟浏览器获取获取不到任何内容。

二、解决方法

# 获取#document下的数据

iframe = WebDriverWait(self.browser, 20).until(

EC.presence_of_element_located(

(By.CSS_SELECTOR, 'iframe')))

# iframe = browser.find_element_by_css_selector('iframe')

self.browser.switch_to_frame(iframe)

如上面的代码所示,使用swith_to.frame()方法来切换Frame即可解决。