python表单切换_十、Python+selenium iframe嵌套表单和浏览器窗口切换

iframe表单

在Web应用遇到frame/iframe表单嵌套页面通过webdriver的switch_to.frame()和switch_to.parent_content切入和跳出frame表单

driver.switch_to.frame(driver.find_element_by_xpath("xpath"))      # 通过定位方式切入iframe表单

driver.switch_to.frame(0)                                                                 # 通过iframe的索引切入 iframe表单

driver.switch_to.frame('id value')                                                     # 通过iframe的id切换入frame表单

driver.switch_to.frame('name')                                                        # 通过iframe的name切入iframe表单

driver.switch_to.parent_comtent()                                                  # 跳出当前一级表单

driver.switch_to.default_content()                                                  # 跳回最外层页面

注:switch_to.frame()默认取表单的id和name属性,没有id和name可以通过iframe表单的索引和iframe标签的定位方式来切入

浏览器窗口切换

获取当前窗口句柄:handle = driver.current_window_handle

获取所有窗口句柄:all_handle = driver.window_handles

通过句柄切换窗口:driver.switch_to.handle(handle)

获取当前所有打开的窗口句柄返回的为一个列表,可以通过遍历循环和列表索引获取对应的handle

注:获取当前打开的所有窗口handle的列表是按窗口的打开顺序排列而不是获取handle时窗口的序列顺序排列

#!/usr/bin/python3

# coding=utf-8

from selenium import webdriver

def test_handle():

driver = webdriver.Chrome()

driver.maximize_window()

driver.get("https://www.baidu.com")

home_handle = driver.current_window_handle # 获取百度首页handle

driver.find_element_by_xpath("//*[@id='lg']/map/area").click()

driver.switch_to.window(home_handle) # 通过handle值切换回百度首页

driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")

driver.find_element_by_xpath("//input[@id='su']").click()

driver.find_element_by_xpath("//*[@id='con-ar']/div[1]/div/div/div[2]/div[1]/div[1]").click()

all_handle = driver.window_handles # 获取所有打开的窗口的handles

driver.switch_to.window(all_handle[1]) # 切换到百度今日新鲜事

print(driver.title)

driver.switch_to.window(all_handle[2]) # 切换到百度翻译

print(driver.title)

driver.switch_to.window(all_handle[0]) # 切换到百度首页

print(driver.title)

driver.quit()

test_handle()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值