Python中如何使用Selenium的PhantomJS驱动切换浏览器标签页

我知道 Chrome 下可以切换,但是想知道 PhantomJS 下怎么切换,麻烦熟悉的大佬告诉下,3Q


Python中如何使用Selenium的PhantomJS驱动切换浏览器标签页
2 回复

在Python的Selenium中,PhantomJS是一个无头浏览器,虽然它本身不支持多标签页,但我们可以通过模拟浏览器行为来切换窗口句柄。下面是一个完整的示例代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# 启动PhantomJS驱动
driver = webdriver.PhantomJS()
driver.get("https://www.baidu.com")

# 获取当前窗口句柄
current_handle = driver.current_window_handle

# 通过JavaScript打开新标签页
driver.execute_script("window.open('https://www.google.com')")

# 获取所有窗口句柄
all_handles = driver.window_handles

# 切换到新标签页
for handle in all_handles:
    if handle != current_handle:
        driver.switch_to.window(handle)
        break

# 在新标签页中操作
print("当前页面标题:", driver.title)
time.sleep(2)

# 切换回原标签页
driver.switch_to.window(current_handle)
print("切换回原页面标题:", driver.title)

# 关闭浏览器
driver.quit()

关键点:

  1. 使用driver.current_window_handle获取当前窗口句柄
  2. 通过driver.execute_script("window.open()")打开新标签页
  3. 使用driver.window_handles获取所有窗口句柄列表
  4. 通过driver.switch_to.window(handle)切换到指定标签页

注意:PhantomJS已经停止维护,建议考虑使用Chrome或Firefox的无头模式替代。

总结:用窗口句柄管理标签页切换。


打开一个链接, 并获取其窗口句柄
wb.get(“https://www.baidu.com”)
w1 = wb.current_window_handle
# wb.save_screenshot(‘S1.png’)

# 用 js 打开一个新窗口并获取其窗口句柄并切换过去
wb.execute_script(‘window.open(“https://www.v2ex.com”)’)
w2 = wb.window_handles[1]
wb.switch_to.window(w2)
# wb.maximize_window()
# wb.save_screenshot(‘S2.png’)

回到顶部