Python seleniu3 iframe操作

1.什么是iframe:HTML中嵌套的HTML
2.如何判断操作的元素在iframe中
    2.1.当使用正确的元素定位方式无法定位到元素时
    2.2.iframe使用场景:
        登录输入框
        富文本(可以编辑文字的输入框)
        后台管理表单
    3.找iframe标签
    4.进入iframe标签
    driver.switch_to.frame(参数)
    参数:
        1.当iframe标签有固定的id/name属性值的时候,参数=id/name
        2.当iframe标签没有id/name属性或id/name属性不固定,参数=定位到的iframe元素
        3.当明确知道iframe索引值时,参数=索引值,索引从0开始
    5.操作iframe
        点击,输入
    6.退出iframe
        driver.switch_to.parent_frame()  # 返回到上一层
        driver.switch_to.default_content()  #跳出到最外层

案例:

# 1.导入selenium
from selenium import webdriver
from time import sleep
import os

# 2.打开谷歌浏览器
driver = webdriver.Chrome()
# 3.打开百度
url = "file:///" + os.path.abspath("../../练习页面/注册实例.html")
driver.get(url)
# 4.浏览器最大化
# driver.maximize_window()
# 5.元素操作
sleep(2)
# 5.1 在账号输入框输入 root
driver.find_element_by_css_selector("#user").send_keys("root")
sleep(2)
# 5.2 进入iframe1
driver.switch_to.frame("idframe1")
# 5.3 密码A输入123456
driver.find_element_by_css_selector("#passwordA").send_keys("123456")
sleep(2)
# 5.4 退出iframe1
driver.switch_to.parent_frame()  # 上一级
# driver.switch_to.default_content()  # 最外层
# 5.5 在电话号码中输入789456
driver.find_element_by_css_selector("#tel").send_keys("789456")
sleep(2)
# 5.6 进入iframe2
driver.switch_to.frame("myframe2")
# 5.7 在邮件输入框中输入12346789@qq.com
driver.find_element_by_css_selector("#emailB").send_keys("12346789@qq.com")
sleep(2)
# 5.8 退出iframe2
driver.switch_to.parent_frame()
sleep(2)
# 5.9 点击注册用户
driver.find_element_by_css_selector("button[title*='加入会员']").click()
# 6.关闭浏览器
driver.quit()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用PythonSelenium切换iframe的步骤如下: 1. 使用driver.switch_to.frame()方法切换到目标iframe,可以通过iframe的id、name或者index来定位。 2. 在iframe中进行操作,例如查找元素、输入文本等。 3. 使用driver.switch_to.default_content()方法切换回主页面。 示例代码如下: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://example.com") # 切换到第一个iframe iframe = driver.find_element_by_tag_name("iframe") driver.switch_to.frame(iframe) # 在iframe中进行操作 element = driver.find_element_by_xpath("//input[@name='username']") element.send_keys("username") # 切换回主页面 driver.switch_to.default_content() # 关闭浏览器 driver.quit() ``` ### 回答2: 在使用Python Selenium进行自动化测试的过程中,有时我们需要在页面中切换iframe,以便于操作页面中的元素。在页面中iframe是一个独立的HTML文档,它嵌套在主页面中,需要通过switch_to.frame()方法进行切换。 第一步,先要定位到iframe元素,可以通过以下代码实现: ``` iframe = driver.find_element_by_xpath("xpath_of_iframe") ``` 第二步,使用switch_to.frame()方法切换到iframe中,可以通过以下方式切换: ``` driver.switch_to.frame(iframe) ``` 这个时候,当前driver所在位置就已经切换到了iframe里面,我们可以在这个位置操作页面中的元素。 最后,如果需要回到主页面,则可以使用switch_to.default_content()方法进行切换: ``` driver.switch_to.default_content() ``` 以上就是Python Selenium切换iframe的方法,需要注意的是,iframe在页面中可能有多个,所以在定位iframe时要准确。同时也要注意,如果元素操作完成后没有切换回主页面,可能会导致后续操作失败,所以要格外小心。 ### 回答3: 在进行Web自动化测试时,经常需要与iframe进行交互操作pythonselenium库提供了丰富的API来实现iframe的切换,在这里我将详细讲解python selenium如何实现iframe的切换。 如果一个页面中包含一个或多个iframe,则测试时需要先切换到对应的iframe,然后才能对该iframe内部的元素进行操作。因此,切换iframe是很重要的一步。 1. 通过frame(iframeElem)切换 frame(iframeElem)方法接收一个参数,即目标iframe对应的WebElement对象,代码实现如下: ```python # 导入selenium库 from selenium import webdriver from selenium.webdriver.common.by import By # 初始化selenium webdriver driver = webdriver.Chrome() # 打开网址 driver.get('https://www.baidu.com') # 切换到百度输入框的iframe iframeElem = driver.find_element(By.XPATH, '//iframe[@id="s_lg_img_new"]') driver.switch_to.frame(iframeElem) # 在iframe内部输入关键词 searchElem = driver.find_element(By.XPATH, '//input[@id="kw"]') searchElem.send_keys('selenium') # 切换回主页面 driver.switch_to.default_content() ``` 2. 通过frame(index)切换 frame(index)方法接收一个参数,即目标iframe在当前页面中的索引值,代码实现如下: ```python # 初始化selenium webdriver driver = webdriver.Chrome() # 打开网址 driver.get('https://www.baidu.com') # 切换到百度输入框的iframe driver.switch_to.frame(0) # 等同于 driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0]) # 在iframe内部输入关键词 searchElem = driver.find_element(By.XPATH, '//input[@id="kw"]') searchElem.send_keys('selenium') # 切换回主页面 driver.switch_to.default_content() ``` 3. 通过parent_frame()方法切换 parent_frame()方法用于从当前iframe返回到其父级iframe,如果没有父级iframe,则返回主页面。代码实现如下: ```python # 初始化selenium webdriver driver = webdriver.Chrome() # 打开网址 driver.get('https://www.baidu.com') # 切换到百度输入框的iframe driver.switch_to.frame(0) # 在frame1内部点击链接,跳转到frame2 linkElem = driver.find_element(By.XPATH, '//a[@id="toFrame2"]') linkElem.click() # 切换到frame2 driver.switch_to.frame(0) # 在frame2内部输入 searchElem = driver.find_element(By.XPATH, '//input[@id="kw"]') searchElem.send_keys('selenium') # 切换回frame1 driver.switch_to.parent_frame() # 再次切换到frame2 driver.switch_to.frame(0) # 点击返回到父级iframe driver.find_element(By.XPATH, '//a[text()=" 返回上一级"]').click() # 切换回主页面 driver.switch_to.default_content() ``` 通过上述三种方法,我们可以轻松实现在iframe之间的自由切换,提高Web自动化测试的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值