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

您所在的位置:网站首页 selenium进入frame web自动化笔记七:Frame切换、多窗口切换

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

2023-09-06 08:02| 来源: 网络整理| 查看: 265

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('[email protected]') 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('[email protected]') 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('[email protected]') 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  提取码:qe9g2、窗口的切换 方法: 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、判断 不是 当前窗口句柄



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3