第一篇:Selenium接管Chrome浏览器的两种方式

108 阅读2分钟

1.使用Selenium打开浏览器

  1. 下载好Chrome驱动,如果访问不了外网,可以[从这里下载](内容详情 -GiaoLink),有各种新老版本及浏览器,有win\mac\linux适配的包以及无头模式的包

  2. 使用python执行下列文件内容

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

# 初始化浏览器驱动(Chrome)
# 如果驱动已在环境变量中,可简化为:driver = webdriver.Chrome()
# 关于如何设置环境变量,请自行百度
# path/to/chromedriver改成你的chrome驱动包的路径
# 比如 driver = webdriver.Chrome(executable_path=r'C://chromedriver')
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

try:
    # 打开网页
    driver.get("https://www.baidu.com")
    
    # 最大化窗口
    driver.maximize_window()
    
    # 查找搜索框并输入内容
    search_box = driver.find_element(By.ID, "kw")
    search_box.send_keys("Selenium")
    
    # 模拟按下回车键
    search_box.send_keys(Keys.RETURN)
    
    # 等待3秒,让页面加载完成
    time.sleep(3)
    
    # 获取搜索结果标题并打印
    results = driver.find_elements(By.CSS_SELECTOR, ".result h3 a")
    for i, result in enumerate(results[:5]):  # 只打印前5条结果
        print(f"{i+1}. {result.text}")
    
    # 截图保存
    driver.save_screenshot("search_results.png")

finally:
    # 关闭浏览器
    driver.quit()

2.使用Selenium接管已打开浏览器

1.使用命令行(cmd)启动浏览器调试模式

"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="C:\selenium_chrome_data" 
# macOS/Linux 示例 
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/tmp/selenium_chrome_data"

2.python执行下列代码,其中9222就是一步里的--remote-debugging-port=9222需保持一致

```from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

# 配置 Chrome 选项
chrome_options = Options()
# 连接到已开启调试模式的浏览器
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

# 初始化驱动,连接到已打开的浏览器
driver = webdriver.Chrome(options=chrome_options)

try:
    # 现在可以控制已打开的浏览器了
    print("成功接管浏览器,当前页面标题:", driver.title)
    
    # 示例操作:打开一个新网页
    driver.get("https://www.baidu.com")
    time.sleep(2)
    
    # 在已打开的浏览器中执行其他操作
    if "百度" in driver.title:
        search_box = driver.find_element("id", "kw")
        search_box.send_keys("Selenium 接管浏览器")
        search_box.submit()
        time.sleep(3)

finally:
    # 注意:这里使用close()而不是quit(),避免关闭整个浏览器
    # driver.close()  # 关闭当前标签页
    pass  # 保持浏览器打开