等峰也等你

博客园 首页 新随笔 联系 订阅 管理

多窗口处理与⽹页frame:

selenium⾥⾯如何处理多窗口场景

  ❖ 多个窗口识别

  ❖ 多个窗口之间切换

selenium⾥⾯如何处理frame

  ❖ 多个frame识别

   ❖ 多个frame之间切换

多窗口处理:

点击某些链接,会重新打开⼀个窗口,对于这种情况,想在新页⾯上操作,就 得先切换窗口了。

获取窗口的唯⼀标识⽤句柄表示,所以只需要切换句柄,就可以在多个页⾯灵 活操作了。

多窗口处理流程:

❖ 1. 先获取到当前的窗口句柄(driver.current_window_handle)

❖ 2. 再获取到所有的窗口句柄(driver.window_handles)

❖ 3. 判断是否是想要操作的窗口,如果是,就可以对窗口进⾏操作,如果不是, 跳转到另外⼀个窗口,对另⼀个窗⼜进⾏操作 (driver.switch_to_window)

多窗口切换案例:

打开百度页⾯

❖ 点击登录,

❖ 弹框中点击 ‘⽴即注册’,输⼊⽤户名 和帐号

❖ 返回刚才的登录页,点击登录

❖ 输⼊⽤户名和密码,点击登录

frame介绍:

在web⾃动化中,如果⼀个元素定位不到,那么很⼤可能是在iframe中。

❖ 什么是frame?

  ❖ frame是html中的框架,在html中,所谓的框架就是可以在同⼀个浏览器中显⽰不⽌⼀个页⾯。

  ❖ 基于html的框架,又分为垂直框架和⽔平框架(cols,rows)

❖ Frame 分类

  ❖ frame标签包含frameset、frame、iframe三种,

  ❖ frameset和普通的标签⼀样,不会影响正常的定位,可以使⽤index、id、name 、webelement任意种⽅式定位 frame。

  ❖ ⽽frame与iframe对selenium定位⽽⾔是⼀样的。selenium有⼀组⽅法对frame进⾏操作

❖ 演⽰:https://www.w3school.com.cn/tiy/t.asp?f=html_frame_cols

多frame切换:

frame存在两种:

   ❖ ⼀种是嵌套的,⼀种是未嵌套的

切换frame

  ❖ driver.switch_to.frame() # 根据元素id或者index切换切换frame

   ❖ driver.switch_to.default_content() # 切换到默认frame

  ❖ driver.switch_to.parent_frame() # 切换到⽗级frame

frame未嵌套:

 处理未嵌套的iframe

  ❖ driver.switch_to_frame(“frame 的 id”)

   ❖ driver.switch_to_frame(“frame - index”) frame⽆ID的时候依据索引来处 理,索引从0开始 driver.switch_to_frame(0)

Frame嵌套:

处理嵌套的iframe

  ❖ 对于嵌套的先进⼊到iframe的⽗节点,再进到⼦节点,然后可以对⼦节点⾥ ⾯的对象进⾏处理和操作

  ❖ driver.switch_to.frame(“⽗节点”)

  ❖ driver.switch_to.frame(“⼦节点”)

多frame切换案例:

多frame切换案例:

❖ 打开包含frame的web页⾯ https:// www.runoob.com/try/ try.php?filename=jqueryui-apidroppable

❖ 打印’请拖拽我’元素的⽂本

❖ 打印’点击运⾏’元素的⽂本

多frame切换案例:

def test_framedeal_1(self):

   self.driver.get(“https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")

   self.driver.switch_to.frame("iframeResult")

   print(self.driver.find_element_by_id("droppable").text)

   self.driver.switch_to.parent_frame()

   print(self.driver.find_element_by_id("submitBTN").text)

self.driver.switch_to.frame("iframeResult")`是 Selenium WebDriver 中的一个方法,它表示切换到名为 "iframeResult" 的 frame。

self.driver.switch_to.parent_frame() 是 Selenium WebDriver 中的一个方法,它表示切换到父级 frame。

在 Selenium WebDriver 中,每个窗口或标签页都拥有一个唯一的窗口句柄(handle),用于在多窗口操作中标识和切换不同的窗口。

1.打印出当前浏览器窗口的句柄:print(self.driver.current_window_handle)

2.print(self.driver.window_handles)` 这行代码的作用是打印出所有窗口的句柄(handles)

posted on 2023-12-29 12:46  等峰也等你  阅读(23)  评论(0编辑  收藏  举报