如果要操作被嵌入的html文档中的元素,需要切换操作范围到被嵌入的文档中
如何切换Frame
使用WebDriber对象的switch_to属性
wd.switch_to.frame(name\id)
可以切换到frame的class或id
也可以根据css选择器找到该框架,然后用switch_to.frame寻找
那如何回到最外面?使用wd.switch_to.default_content()方法
代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
if __name__ == '__main__':
wd = webdriver.Chrome()
wd.get("https://cdn2.byhy.net/files/selenium/sample2.html")
# 切换到frame后,只能操作里面的元素
# wd.switch_to.frame("frame1")
wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR, "[src='sample1.html']"))
elements = wd.find_elements(By.CSS_SELECTOR, ".plant span")
for e in elements:
print(e.get_attribute("outerHTML"))
wd.switch_to.default_content() # 切换到外层
element = wd.find_element(By.CSS_SELECTOR, ".baiyueheiyu")
print(element.get_attribute("outerHTML"))
input()
执行结果: