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

selenium-iframe

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()


相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-20
  • 2021-08-23
  • 2021-07-01
猜你喜欢
  • 2022-02-18
  • 2021-08-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案