python selenium句柄
时间: 2023-12-22 15:30:04 浏览: 32
以下是使用Python和Selenium获取浏览器窗口句柄的方法:
```python
from selenium import webdriver
# 创建浏览器实例
driver = webdriver.Firefox()
# 打开网页
driver.get("http://bj.ganji.com/")
# 获取当前窗口句柄
current_handle = driver.current_window_handle
print(current_handle) # 输出当前窗口句柄
# 点击链接打开新窗口
driver.find_element_by_link_text("招聘求职").click()
# 获取所有窗口句柄
all_handles = driver.window_handles
print(all_handles) # 输出所有窗口句柄
# 切换到新窗口的方法一:判断句柄,不等于当前窗口句柄就切换
for handle in all_handles:
if handle != current_handle:
driver.switch_to.window(handle)
print(driver.title) # 输出新窗口的标题
# 切换到新窗口的方法二:直接切换到list中的第二个句柄
driver.switch_to.window(all_handles[1])
print(driver.title) # 输出新窗口的标题
# 关闭新窗口
driver.close()
```
相关问题
selenium 句柄
在Selenium中,一个窗口或标签页被称为一个“句柄”(handle)。可以使用`driver.window_handles`方法获取当前所有窗口的句柄。例如,以下代码将打开一个新窗口并切换到该窗口:
```python
from selenium import webdriver
driver = webdriver.Chrome()
# 在当前窗口打开网页
driver.get('https://www.baidu.com')
# 打开一个新窗口
driver.execute_script("window.open('https://www.google.com');")
# 切换到新窗口
handles = driver.window_handles
driver.switch_to.window(handles[-1])
# 在新窗口中执行操作
print(driver.title)
# 关闭新窗口
driver.close()
# 切换回原来的窗口
driver.switch_to.window(handles[0])
# 在原来的窗口中执行操作
print(driver.title)
# 关闭浏览器
driver.quit()
```
在上面的代码中,`driver.window_handles`方法返回一个列表,其中每个元素都是一个窗口句柄。`driver.switch_to.window()`方法用于切换到指定的窗口。`handles[-1]`表示最后一个窗口的句柄,因为新打开的窗口通常会排在最后。`driver.close()`方法用于关闭当前的窗口。最后,`driver.quit()`方法用于关闭整个浏览器。
selenium句柄实例
以下是一个使用selenium句柄的示例:
```python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 初始化Chrome浏览器
driver = webdriver.Chrome()
# 打开一个新窗口,访问百度网站
driver.execute_script("window.open('https://www.baidu.com');")
# 获取所有窗口的句柄
handles = driver.window_handles
# 切换到最新打开的窗口
driver.switch_to.window(handles[-1])
# 在百度搜索框中输入关键词
search_box = driver.find_element_by_name('wd')
search_box.send_keys('selenium')
search_box.send_keys(Keys.RETURN)
# 关闭当前窗口
driver.close()
# 切换回原来的窗口
driver.switch_to.window(handles[0])
# 在原来的窗口中打开GitHub网站
driver.execute_script("window.open('https://github.com');")
# 获取所有窗口的句柄
handles = driver.window_handles
# 切换到最新打开的窗口
driver.switch_to.window(handles[-1])
# 关闭当前窗口
driver.close()
# 切换回原来的窗口
driver.switch_to.window(handles[0])
# 关闭浏览器
driver.quit()
```
上面的代码演示了如何使用selenium句柄来打开和切换多个窗口,以及如何在不同的窗口中执行不同的操作。在这个示例中,我们打开了两个窗口,分别是百度和GitHub网站,然后在百度搜索框中输入关键词“selenium”,最后关闭所有窗口并退出浏览器。