iframe,又叫浮动帧标记,是内嵌的网页元素,可以将一个html文件嵌入到另一个html文件中显示。
最典型的案例就是163邮箱登录:http://mail.163.com/,被绿色覆盖的部分即为iframe。
对iframe进行操作,需要用到一下种方法:
- switch_to_iframe() 切换到iframe上
- switch_to.iframe() 切换到iframe上
- switch_to.default_content() 切换回原主页面
1.确定要操作的元素是否在iframe上。
chrome给我们提供了一个的操作。
以“网易邮箱登录为例”,打开网页http://mail.163.com/,F12
2.切换到iframe
driver.switch_to.iframe('x-URS-iframe')
3.返回主页面
我们切换到iframe上之后,就无法对iframe以外的元素进行操作,如果需要,我们需要退出iframe
#退出iframe
driver.switch_to.default_contect()
登陆163邮箱为例:
from selenium import webdriver import time driver = webdriver.Chrome() driver.maximize_window() driver.get("https://mail.163.com/") time.sleep(3) #定位到iframe并切换 #iframe = driver.find_element_by_id("x-URS-iframe") #清除用户名文本,输入用户名 driver.switch_to.frame('x-URS-iframe') driver.find_element_by_xpath("//div/*[@name='email']").clear() driver.find_element_by_xpath("//div/*[@name='email']").send_keys("username") #清除密码文本,输入密码 driver.find_element_by_xpath("//div/*[@name='password']").clear() driver.find_element_by_xpath("//div/*[@name='password']").send_keys("password") #点击登陆按钮 driver.find_element_by_xpath("//div/*[@id='dologin']").click() #退出iframe driver.switch_to.default_content() time.sleep(8) driver.quit()