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,里面有各种测试开发资料和技术可以一起交流哦。