Selenium基础 — iframe表单操作

这篇具有很好参考价值的文章主要介绍了Selenium基础 — iframe表单操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、什么是iframe表单

实际上就是HTML页面中使用iframe/frame标签,是在当前页面中引用了其他页面的链接,真正的页面数据并没有出现在当前页面源码中,但是在浏览器中我们时看到的。简单理解可以使页面中开了一个窗口显示另一个页面。
我们在Web应用中,经常会遇到这样的iframe表单嵌套页面,Frame标签有framesetframeiframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位。而frameiframe需要切换进去才能定位到其中的元素,这就相当于frameiframe是当前页面中嵌套的其他页面。这时就需要通过switch_to.frame()方法,将当前定位的主体切换为 frameiframe表单的内嵌页面中。

2、iframe表单操作流程

假设:页面上有A、B 两个frame,其中B 在A 内,那么定位B 中的内容则需要先到A,然后再到B。
下面的代码中frame.html 里有个id 为f1 的frame,该页面我们简称为frame 。而f1 中又嵌入了id 为f2 的frame,该页面我们简称为inner,该frame 加载了百度的首页。
首先我们进入页面的时候,就已经在frame 页面中了,如果我们想要在inner页面的百度搜索框输入内容,就要定位到inner页面(inner的frame 标签),然后再进入到inner页面中,然后定位inner页面中的百度搜索框,输入内容。
如下图:

Selenium基础 — iframe表单操作

注:

  • 进入浏览器直接就可以操作的页面,就是最外层表单iframe。
  • 然后其他的表单从0开始,依次索引。

3、iframe表单操作常用方法

(1)进入表单
使用switch_to.frame()方法进入一个表单。

  1. 方式一:通过表单的id或name属性切换进表单
    driver.switch_to.frame(value)driver.switch_to_frame(value)(已过期)
  2. 方式二:先定位到表单元素,再切换进入。
    可以是各种方式定位到iframe表单元素。
    el = driver.find_element_by_xxx(value)
    然后再进入表单
    driver.switch_to.frame(el)driver.switch_to_frame(el)(已过期)

(2)多表单切换

  1. 跳回最外层的页面。
    driver.switch_to.default_content()
  2. 跳回上层的页面。
    driver.switch_to.parent_frame()

4、示例

"""
1.学习目标:
    必须掌握iframe表单操作方式
2.语法(操作步骤)
    2.1 确定即将操作的元素是否属于iframe
        F12中elements最下方查看是否有iframe/frame标签名
    2.2 定位iframe/frame标签
    2.3 进入iframe
        driver.switch_to.frame(参数)
        参数:
            当iframe标签有id/name属性时,参数=id/name的属性值,无需定位。
                driver.find_element_by_id("idframe")
            当iframe标签没有id/name属性时,先定位,参数=定位元素
                el_frame = driver.find_element_by_xpath("//iframe[starts-with(@id,'x-URS-iframe')]")
                driver.switch_to.frame(el_frame)
            当明确页面中iframe索引值,参数=索引值
                driver.switch_to.frame(0)  # 参数=索引值  从0开始
                (也就是页面中有几个iframe,和你需要的iframe的索引,你都知道就可以用)
    2.4 操作iframe中的元素
        和普通页面一样
    2.5 退出iframe
        退出到上一层   driver.switch_to.parent_frame()
        退出到最外层 driver.switch_to.default_content()
        具体跳出到哪一层,根据下一步操作而定。
3.需求
    在163邮箱登陆页面中,操作iframe元素。
4.iframe在web中的应用位置
    1.一般的登录,163邮箱,qq邮箱,
    2.发邮件(富文本编辑器一般是嵌入到页面中的,也就是邮件的正文也是iframe),
    3.后台管理菜单栏
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep

# 2.打开浏览器
driver = webdriver.Chrome()

# 3.打开页面
url = "https://mail.163.com/"
driver.get(url)
sleep(2)

# 4.iframe操作
# 4.1 进入iframe表单
# 4.1.1 方式一:先定位iframe表单再进入
el_frame = driver.find_element_by_xpath("//iframe[starts-with(@id,'x-URS-iframe')]")
# print(el_frame.get_attribute("outerHTML"))
# 4.1.2 切换进入表单中
driver.switch_to.frame(el_frame)

# 4.1.3 方式二:直接通过id或name进入表单中
# 如下id不正确
# driver.switch_to.frame('x-URS-iframe')

# 4.1.4 方式三:通过索引值切换进入表单
# 参数=索引值  从0开始
# driver.switch_to.frame(0)  # 可用

# 4.2 操作表单中的元素
# 4.2.1 定位账号输入框和密码输入框
email = driver.find_element_by_css_selector("input[name='email']")
password = driver.find_element_by_css_selector("input[name='password']")
sleep(2)

# 4.2.2 填写内容
email.clear()
email.send_keys("Selenium")
password.clear()
password.send_keys("Selenium")
sleep(2)

# 4.3 跳出页面中表单
# 因为页面中只有一层iframe,所以跳到上一层和最外层一样效果。
# 4.3.1 跳到最外层
driver.switch_to.default_content()

# 4.3.2 跳到上一层
# driver.switch_to.default_content()
sleep(2)

# 4.4 点击网易首页
driver.find_element_by_link_text("网易首页").click()
sleep(3)

# 5.关闭浏览器
driver.quit()

最后我这里给你们分享一下我所积累和真理的文档和学习资料有需要是领取就可以了

1、学习思路和方法

这个大纲涵盖了目前市面上企业百分之99的技术,这个大纲很详细的写了你该学习什么内容,企业会用到什么内容。总共十个专题足够你学习

Selenium基础 — iframe表单操作

2、想学习却无从下手,该如何学习?

这里我准备了对应上面的每个知识点的学习资料、可以自学神器,已经项目练手。

Selenium基础 — iframe表单操作

3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件....

Selenium基础 — iframe表单操作

Selenium基础 — iframe表单操作

Selenium基础 — iframe表单操作

4、有了安装包和学习资料,没有项目实战怎么办,我这里都已经准备好了往下看

Selenium基础 — iframe表单操作

最后送上一句话:
世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
如果我的博客对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦

Selenium基础 — iframe表单操作文章来源地址https://www.toymoban.com/news/detail-419155.html

到了这里,关于Selenium基础 — iframe表单操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium iframe框架处理

    对于子嵌套的页面,我们直接标签定位会报错,如下面代码 所以我们要切换作用域,根据iframe标签的id转入iframe框架,再进行后续操作。 操作完成后返回主框架 源码语法请看下图  我们来模拟登录进行简单案例加以巩固,比如qq空间登录界面。 现在一般来说,进入qq空间官网

    2024年02月04日
    浏览(34)
  • selenium中,切换iframe的方法

    最近在学基于python+selenium的web自动化,在此记录下学习的东西,也希望可以跟学习这技能的小伙伴们分享、交流。 iframe也称作嵌入式框架,嵌入式框架和框架网页类似,它可以把一个网页的框架和内容嵌入在现有的网页中。在selenium进行定位时,如果需要定位某个iframe内的元

    2024年02月16日
    浏览(37)
  • selenium+python处理iframe切换

    selenium+python处理iframe切换有3种方法: 1、如果iframe有id或name,则可根据iframe的id或name切换。 2、把iframe当作页面元素,通过元素定位表达式进行切换。 3、将iframe存储到list中,然后根据ifrane的索引定位 (适合页面有多个iframe,且前两种方法无法使用)。 如果页面有多层ifram

    2024年02月11日
    浏览(42)
  • selenium-java中切换iframe

    1、当iframe中有固定的name或者id时可以通过name和id进行切换,代码如下 2、当iframe中没有固定的name或者id时可以通过iframe角标进行切换,在浏览器通过ctrl+f快捷键,搜索标签框输入//iframe;来查看当前iframe是第几个来定位,代码如下 注意:通过下标来定位时需要是同级别的,如果

    2024年01月18日
    浏览(39)
  • selenium多窗口、多iframe切换、alert切换

    场景: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作。这种情况下,需要识别多标签或窗口的情况。 操作方法: switch_to.window()方法:切换窗口。可以实现在不同的窗口之间切换。current_window_handle:获得当前窗口句柄。

    2024年02月07日
    浏览(42)
  • Python学习笔记——selenium定位iframe和元素(快速定位)

    在使用selenium过程,发现定位iframe、元素比较困难,所以制作一个辅助小工具。  当前界面没有,调整driver位置 1.Xpath定位  2,.其他定位方式 获取元素、操作失败重复操作,直至操作成功。

    2024年02月13日
    浏览(48)
  • 软件测试|如何使用selenium处理iframe富文本输入框

    简介 在网页开发中,富文本框是常见的元素,用于输入富文本内容,如富文本编辑器或邮件编辑器。如果我们要使用Python和Selenium进行自动化测试或操作这种富文本框,可能会遇到一些挑战。本文将详细介绍如何使用Python和Selenium来向iframe富文本框输入内容,并提供示例代码

    2024年01月20日
    浏览(39)
  • Selenium基础 — 多窗口操作

    场景: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作。这种情况下,需要识别多标签或窗口的情况。 操作方法: switch_to.window() 方法:切换窗口。可以实现在不同的窗口之间切换。 current_window_handle : 获得当前窗口句柄。

    2023年04月09日
    浏览(45)
  • Selenium 解决html中的嵌套问题(xpath中存在iframe)

    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:“xpath”,“selector”:\\\"/… 在已确定页面元素全部加载完成,并且确定xpath路径正确的情况下,可以考虑是否存在标签嵌套或者存在iframe标签的情况。 iframe标签可以将一个HTML文档嵌入在一个

    2024年02月12日
    浏览(49)
  • 解决selenium访问网页中多个iframe,导致无法锁定元素的问题

    获取全部的iframe列表 调试获取目标iframe 使用: browser.switch_to.frame(目标iframe) 退回到原有的状态: browser.switch_to.default_content() 不同的iframe之间的元素无法被selenium锁定,因此需要通过人为调试,得到具体的iframe窗口,进入目标iframe后才能够进行元素的锁定,锁定后就得到目标

    2024年02月22日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包