web自动化笔记七:Frame切换、多窗口切换

1、frame操作
frame 浏览器一个页面里内嵌一个页面
①driver.switch_to_frame(id或者name)#快被淘汰的写法
②driver.switch_to.frame()#被推荐的写法

driver.swith_to.default_content()#会客厅,回到主页
如果三层frame,第一层:driver.switch_to.frame(id或者name)
第二层:driver.switch_to.frame(id或者name),只能逐级切换frame
第三层如果driver.swith_to.default_content()进入最初页面
如果想去上一层driver.switch_to.parent_frame()#回到第一层frame页面

代码执行:

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('file:///C:/Users/j3027/PycharmProjects/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%A4%8D%E4%B9%A0/file/%E6%B3%A8%E5%86%8C%E5%AE%9E%E4%BE%8B.html')
def ele_method(value):
    return driver.find_element(By.CSS_SELECTOR,value)
# 主主册页信息填写
# 用户名填写
ele_method('#user').send_keys('admin')
time.sleep(2)
# 密码填写
ele_method('#password').send_keys('123456')
time.sleep(2)
# 电话填写
ele_method('#tel').send_keys('12345678901')
time.sleep(2)
# 邮箱填写
ele_method('#email').send_keys('12345@qq.com')
time.sleep(2)
# 注册页A信息填写
# 切换页面A的frame
driver.switch_to.frame('idframe1')
time.sleep(2)
# 用户名填写
ele_method('#userA').send_keys('adminA')
time.sleep(2)
# 密码填写
ele_method('#passwordA').send_keys('123456')
time.sleep(2)
# 电话填写
ele_method('#telA').send_keys('12345678902')
time.sleep(2)
# 邮箱填写
ele_method('#emailA').send_keys('123456@qq.com')
time.sleep(2)
# 注册页B信息填写
# 返回上一层页面
driver.switch_to.parent_frame()
# 切换页面B的frame
driver.switch_to.frame('myframe2')
# 用户名填写
ele_method('#userB').send_keys('adminB')
time.sleep(2)
# 密码填写
ele_method('#passwordB').send_keys('123456')
time.sleep(2)
# 电话填写
ele_method('#telB').send_keys('12345678903')
time.sleep(2)
# 邮箱填写
ele_method('#emailB').send_keys('1234567@qq.com')
time.sleep(2)
# 点击确定注册
ele_method('#zc > fieldset > button').click()
time.sleep(2)
# 返回上一层页面
driver.switch_to.parent_frame()
# 返回页面A点击注册
driver.switch_to.frame('idframe1')
ele_method('#zc > fieldset > button').click()
time.sleep(2)
# 返回上一层页面
driver.switch_to.parent_frame()
# 返回主页点击注册
ele_method('#zc > fieldset > button').click()
time.sleep(2)
# 关闭浏览器
driver.quit()

驱动器访问文件

链接:https://pan.baidu.com/s/1D8hFZebmr53XnDHSFB_nGg 
提取码:qe9g

2、窗口的切换
方法:
Driver.current_window_handle —> 获取当前窗口的句柄
Driver.window_handle —>获取当前窗口所有句柄
Driver.switch_to.window(handle) —>切换指定句柄窗口

执行代码:方法一

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/?tn=21002492_26_hao_pg')
driver.maximize_window()
mainhandles=driver.current_window_handle#当前浏览器的句柄
print("当前handles为",mainhandles)
driver.find_element_by_css_selector('form>span>input[id="kw"]').send_keys('花瓣网')
driver.find_element_by_css_selector('form input[id="su"]').click()
time.sleep(5)
driver.find_element_by_partial_link_text('花瓣网_陪你做生活的设计师').click()
transhandles=driver.current_window_handle#执行完代码后查看举柄的变化
print('这个handles为',transhandles)
handles=driver.window_handles#列出浏览器上所有句柄
print("页面上handles数量",handles)
driver.switch_to.window(handles[1])#handles的跳转从百度跳转到花瓣的句柄
thishandles=driver.current_window_handle#跳转后页面花瓣的句柄
print('这次handles为',thishandles)
driver.find_element_by_xpath('//*[@id="hb_search_input"]').send_keys('海报设计\n')
time.sleep(3)
driver.quit()

方法二:

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.maximize_window()
# 第二种转换handle方法
# 定位百度搜索输入框搜索花瓣网
driver.find_element_by_id('kw').send_keys("花瓣网")
time.sleep(2)
# 点击百度一下
driver.find_element_by_id('su').click()
time.sleep(2)
# 点击百度查询的花瓣连接
driver.find_element_by_partial_link_text('陪你做生活的设计师').click()
time.sleep(2)
# 切换句柄
handles=driver.window_handles
for one in handles:
    driver.switch_to.window(one)
    if '陪你做生活的设计师' in driver.title:
        break
driver.find_element_by_xpath('//*[@id="__next"]/main/div[1]/div/div[4]').click()
time.sleep(2)
# 输入花瓣网的账号
driver.find_element_by_xpath('//*[@id="email"]').send_keys('xxxxxxxxxx')
time.sleep(2)
# 输入花瓣网的密码
driver.find_element_by_xpath('//*[@id="password"]').send_keys('xxxxxxxxxx')
time.sleep(2)
driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div/div[2]/div/div/button').click()
time.sleep(3)
# 关闭网页
driver.quit()

步骤:
1、获取所有窗口句柄 
2、判断 不是 当前窗口句柄

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值