driver.switch_to.frame()

一般情况下,我们可以直接通过id或者name切换到frame。

driver.switch_to.frame()
小括号里面填iframe标签的id,或name值
如果没有id,或者name,我们可以先定位到iframe标签,再切换到frame
# 根据标签名切换
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)

当然我们也可以通过其他页面元素定位的方式。
页面元素定位的8种方式:
  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

接下来通过两个具体的实例了解下driver.switch_to.frame()

1、模拟登陆163邮箱

# coding:utf-8

from selenium import webdriver

# 实例化
driver = webdriver.Chrome()
# 发起请求
driver.get("http://mail.163.com/")
# 隐式等待10s
driver.implicitly_wait(10)

# 切换iframe
# 根据标签名切换
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)

# 定位元素并向input标签里输入值
driver.find_element_by_name("email").send_keys("***")   # 输入账号
driver.find_element_by_name("password").send_keys("***")    # 输入密码

# 点击登陆
# driver.find_element_by_id("dologin").click()

# 释放iframe,重新回到主页面
driver.switch_to.default_content()

 2、模拟登陆豆瓣

from selenium import webdriver

# 实例化
driver = webdriver.Chrome()
# 发起请求
driver.get("https://www.douban.com")

# 切换frame
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)

# 定位元素
driver.find_element_by_class_name("account-tab-account").click()
driver.find_element_by_id("username").send_keys("***")  # 输入用户名
driver.find_element_by_id("password").send_keys("***")  # 输入密码

# 点击登陆豆瓣
# driver.find_element_by_link_text('登陆豆瓣')
driver.find_element_by_class_name("btn").click()


# driver.quit()

 

posted @ 2020-09-18 21:56  轩辕吊雷  阅读(6150)  评论(0编辑  收藏  举报