008、iframe 操作

 

一、iframe 操作

  switch_to.frame()           切换到指定iframe元素

  switch_to.parent_frame()    切到上一层 iframe

  switch_to.default_content()    回到主页面 top

 

iframe 类似于 html 嵌套;

当用 iframe 时,需要先定位到 iframe—>切换到 iframe,再去定位里面嵌套的元素 ;

如果要再操作其他元素,需要 退出 iframe ;

 

1、如何知道元素在不在 iframe 上 ,如下2中方式:

 

2、定位到 iframe 之后,还需要切换到 iframe 上才能操作 iframe 里面的元素

示例代码如下:

# -*- coding:utf-8 -*-
# Author: Sky
# Email: 2780619724@qq.com
# Time: 2021/8/16 16:41
# Project: day01
# Module: study_02.py.py
# Environment: Python3.8.6 , Selenium3 环境 ( 3.141.0 版本)
# Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本)


from selenium import webdriver
import time


driver = webdriver.Chrome()
driver.get("http://49.235.92.12:8200/users/login/")

# 点击 意见反馈 链接 ,用 id 定位元素
time.sleep(3)
driver.find_element_by_id('feedback').click()

 

# 第一步 :要定位 iframe 里面的元素,需要先定位 iframe
# 定位 iframe,
time.sleep(3)
iframe = driver.find_element_by_id('feedback_iframe')

 

# 第二步:切换到 iframe 上
driver.switch_to.frame(iframe)

# 定位到反馈内容框
driver.find_element_by_id('mesaage').send_keys('好好学习,天天向上。')


time.sleep(3)
driver.quit()

 

执行结果如下:

 

3、有时候 iframe 元素没有 id name 这些属性,可以通过索引定位(不推荐)

如果 iframe 没有 id 、name 属性,其他属性又不是唯一的,这时可以用 索引定位 ;

示例代码如下:

# -*- coding:utf-8 -*-
# Author:  Sky
# Email:   2780619724@qq.com
# Time:    2021/8/16 16:41
# Project: day01
# Module:  study_02.py.py
# Environment: Python3.8.6 , Selenium3 环境 ( 3.141.0 版本)
# Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本)


from selenium import webdriver
import time


driver = webdriver.Chrome()
driver.get("http://49.235.92.12:8200/users/login/")

# 点击 意见反馈 链接 ,用 id 定位元素
time.sleep(3)
driver.find_element_by_id('feedback').click()

# 通过 索引 定位 iframe
time.sleep(3)
driver.switch_to.frame(0)

# 定位到反馈内容框
time.sleep(3)
driver.find_element_by_id('mesaage').send_keys('好好学习,天天向上。')

time.sleep(3)
driver.quit()

执行结果如下:

 

4、退出 iframe

   切回到首页操作首页上元素

# -*- coding:utf-8 -*-
# Author:  Sky
# Email:   2780619724@qq.com
# Time:    2021/8/16 16:41
# Project: day01
# Module:  study_02.py.py
# Environment: Python3.8.6 , Selenium3 环境 ( 3.141.0 版本)
# Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本)


from selenium import webdriver
import time


driver = webdriver.Chrome()
driver.get("http://49.235.92.12:8200/users/login/")
driver.maximize_window()

# 点击 意见反馈 链接 ,用 id 定位元素
time.sleep(3)
driver.find_element_by_id('feedback').click()

# 通过 索引 定位 iframe
time.sleep(3)
driver.switch_to.frame(0)

# 定位到反馈内容框
time.sleep(3)
driver.find_element_by_id('mesaage').send_keys('好好学习,天天向上。')

# 退出 iframe
# 方法一: 切换到上一层
# driver.switch_to.parent_frame()

# 方法二:切换到top层
driver.switch_to.default_content()

driver.find_element_by_partial_link_text('登录').click()

time.sleep(3)
driver.quit()

 

posted @ 2021-08-17 11:21  空-山-新-雨  阅读(155)  评论(0编辑  收藏  举报