python切换前端的iframe页面_python+selenium 切换iframe

转载自

http://www.cnblogs.com/yoyoketang/p/6128619.html

前言

有很多小伙伴在拿163作为登录案例的时候,发现不管怎么定位都无法定位到,到底是什么鬼呢,本篇详细介绍iframe相关的切换

以http://mail.163.com/登录页面10为案例,详细介绍switch_to_frame使用方法.

一、frame和iframe区别

Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性。 frame是整个页面的框架,iframe是内嵌的网页元素,也可以说是内嵌的框架

Iframe标记又叫浮动帧标记,可以用它将一个HTML文档嵌入在一个HTML中显示。它和Frame标记的最大区别是在网页中嵌入 的所包含的内容与整个页面是一个整体,而< /Frame>所包含的内容是一个独立的个体,是可以独立显示的。另外,应用Iframe还可以在同一个页面中多次显示同一内容,而不必重复这段内 容的代码。

二、163登录界面

2.用firebug定位登录框

3.鼠标停留在左下角(定位到iframe位置)时,右上角整个登录框显示灰色,说明iframe区域是整个登录框区域

4.左下角箭头位置显示iframe属性

bb28e4e27fe38ba004f80d23307d9498.png

三、切换iframe

1.由于登录按钮是在iframe上,所以第一步

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值