十二.python+selenium之页面句柄切换

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

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

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

而如果没有页面句柄切换,只能在第一个打开的窗口页进行元素的定位。

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

脚本演示如下:

#coding:utf-8
from selenium import webdriver
from time import *
bro=webdriver.Firefox()
bro.maximize_window()
bro.get('https://www.bilibili.com/')
bro.find_element_by_class_name("search-keyword").send_keys("selenium")
sleep(2)
ah = bro.current_window_handle #获取当前页面句柄
bro.find_element_by_class_name("search-keyword").submit()
sleep(2)
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(".//*[@id='server-search-app']/div[2]/div[2]/div/div[2]/ul[4]/li[1]/a/div/div[1]/img").click()
'''
#用下标索引去做的第二种方法
bro.switch_to_window(allh[1])#切换到第二个页面
bro.find_element_by_xpath(".//*[@id='server-search-app']/div[2]/div[2]/div/div[2]/ul[4]/li[1]/div/div[1]/a").click()
sleep(5)
bro.quit()

总结:

1.切换页面句柄时使用格式:对象名.switch_to_window(句柄变量名)

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要关闭当前页面,您可以使用 `driver.close()` 方法。如果您想关闭浏览器窗口而不是标签页,请使用 `driver.quit()`。 要切换到现有的页面,您可以使用 `driver.switch_to.window(window_name)` 方法,其中 `window_name` 是目标窗口的名称或句柄。您可以使用 `driver.window_handles` 方法获取所有打开的窗口的句柄列表,然后使用索引来访问特定的句柄。例如,`driver.switch_to.window(driver.window_handles[1])` 将切换到第二个窗口。 ### 回答2: 在Pythonselenium库中,可以使用`driver.close()`方法来关闭当前页面。该方法会关闭并停止当前页面的所有活动。如果当前页面是最后一个打开的页面,则也会关闭整个浏览器会话。 接下来,如果想要切换到已经存在的页面,可以使用`driver.switch_to.window()`方法。该方法需要传入目标窗口的句柄(handle)作为参数。句柄是浏览器为每个打开的窗口生成的一个唯一标识符。 首先,可以通过`driver.window_handles`属性获取所有打开的窗口句柄。然后,可以根据需要选择目标窗口的句柄。例如,如果想要切换到第一个打开的窗口,可以使用`driver.switch_to.window(driver.window_handles[0])`。 以下是一个示例代码,演示了如何关闭当前页面切换到已存在的页面: ```python from selenium import webdriver # 创建一个浏览器对象 driver = webdriver.Chrome() # 打开一个页面 driver.get("https://www.example.com") # 关闭当前页面 driver.close() # 切换到已存在的页面 driver.switch_to.window(driver.window_handles[0]) # 在已存在的页面中进行操作 # ... # 关闭浏览器会话 driver.quit() ``` 上述代码中,通过`webdriver.Chrome()`创建一个Chrome浏览器对象,然后使用`get()`方法打开一个网址。接着,使用`close()`方法关闭当前页面,使用`switch_to.window()`方法切换到已存在的第一个页面。最后,使用`quit()`方法关闭浏览器会话。 希望以上回答能够对你有所帮助。 ### 回答3: 在Python中使用Selenium关闭当前页面切换到现有的页面,可以按照以下步骤进行操作: 1. 首先,导入Selenium模块: ```python from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By ``` 2. 创建一个WebDriver对象,打开网页: ```python driver = webdriver.Chrome() # Chrome浏览器 driver.get("https://www.example.com") # 打开网页示例 ``` 3. 通过`driver.current_window_handle`获取当前页面句柄: ```python current_window = driver.current_window_handle ``` 4. 在当前页面中执行一些操作后,通过`driver.close()`关闭当前页面: ```python driver.close() ``` 5. 切换回之前打开的页面,通过`driver.switch_to.window()`方法传入之前保存的句柄切换到现有的页面: ```python driver.switch_to.window(current_window) ``` 6. 最后,可以继续操作现有的页面。 完整代码示例: ```python from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver = webdriver.Chrome() # Chrome浏览器 driver.get("https://www.example.com") # 打开网页示例 current_window = driver.current_window_handle # 在当前页面中执行一些操作... driver.close() # 切换回之前打开的页面 driver.switch_to.window(current_window) # 继续操作现有的页面... ``` 通过以上步骤,可以在Python中使用Selenium关闭当前页面切换到现有的页面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值