python+selenium之页面句柄切换

版权声明:本文为优快云博主「药药君」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/Static_at/article/details/81119277

首先了解一下句柄是什么意思?

句柄是浏览器的属性,也就是浏览器的唯一标识。类似HTML,需要用不同的属性代表不同的元素地址的定位。

那么我们在很多页面窗口打开的情况下,就需要通过句柄切换的形式来达到我们需要的页面进行元素的定位。

而如果没有页面句柄切换,只能在第一个打开的窗口页进行元素的定位(即句柄可以使我们不用在当前页面打开链接而是跳转至新页面打开链接)。

例如:我们在bilibili进行操作,在搜索框输入selenium,点击一下搜索,然后即会弹出一个新的窗口,若需要在新窗口中点击第一个搜索到的视频进行点击播放,就必须通过页面句柄的切换来达到第二个页面的元素定位。

代码示例:

#coding:utf-8
import selenium
from selenium import webdriver
from time import *
bro=webdriver.Chrome()
bro.maximize_window()
bro.get('https://www.bilibili.com/')
bro.find_element_by_xpath("//input[@class='nav-search-keyword']").send_keys("selenium")
sleep(2)
ah = bro.current_window_handle #获取当前页面句柄
bro.find_element_by_xpath("//input[@class='nav-search-keyword']").submit()
sleep(5)
allh = bro.window_handles #获取所有的页面句柄
print(allh,type(allh)) #打印出来的句柄是以列表的形式存在,所以在访问的时候可以使用下标索引
#用for循环去找页面的第一种方法

for bh in allh:
    if ah!=bh:#若页面句柄不等于第一个句柄,即相当于此时的bh已为新窗口句柄
        bro.switch_to_window(bh)#切换页面句柄时使用格式 :对象名.switch_to_window(句柄名)
bro.find_element_by_xpath("//ul[@type='video']/child::li[1]/div/div[1]/a").click()

sleep(3)
bro.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值