在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在iframe里时我们应该先切换到iframe里面。
一、API语法
1.进入iframe
iframe = self.driver.find_element_by_xpath("//iframe[contains(@src,'https://wap.cmread.com/sso/auth?e_p=1&response_type=token')]")
self.driver.switch_to.frame(iframe)
2.释放/退出iframe
driver.switch_to_default_content()
二、代码实例
以咪咕阅读网站登录界面来实践iframe的切换,我们直接进入登录界面进行操作网址为http://www.cmread.com/u/tologin.do?preUrl=http%3A%2F%2Fwww.cmread.com%2Fu%2Findex
以下为HTML代码结构:

代码如下:
#author:命命 from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("http://www.cmread.com/u/tologin.do?preUrl=http%3A%2F%2Fwww.cmread.com%2Fu%2Findex") #通过contains函数,提取匹配特定文本的所有元素 frame = driver.find_element_by_xpath("//iframe[contains(@src,'https://wap.cmread.com/sso/auth?e_p=1&response_type=token')]") #进入iframe页面 driver.switch_to.frame(frame) #清除账号输入框并输入账号 driver.find_element_by_id("unameInput").clear() driver.find_element_by_id("unameInput").send_keys("输入自己的用户名") #清除密码输入框并输入密码 driver.find_element_by_id("pwdInput").clear() driver.find_element_by_id("pwdInput").send_keys("输入自己的密码") #点击登录按钮 driver.find_element_by_css_selector("input[name = 'login']").click() #获取登录成功页面的用户名 success = driver.find_element_by_css_selector("span[title = '好的好的d']").text print(success) driver.quit()
运行结果:
