你在使用 Selenium 和 Edge 浏览器时遇到的问题可能与以下几个方面有关:
Headless模式的兼容性:--headless=new 参数是为 Chrome 浏览器引入的,用于启用新版的无头模式。Edge 浏览器(基于 Chromium 的版本)也应该支持这个参数。然而,如果你发现使用 --headless=new 时能够正常打印出标题,而使用 --headless=old 时出现问题,这可能是因为 --headless=old 参数在某些版本的 Edge 中不被支持或存在兼容性问题。
代理设置:如果你的代码在设置了代理的情况下无法正常工作,这可能是因为代理服务器的问题。确保你的代理服务器配置正确,并且能够正常访问目标网站。
浏览器驱动版本:确保你使用的 msedgedriver.exe 版本与你的 Microsoft Edge 浏览器版本相匹配。不匹配的版本可能导致各种问题。
环境变量和路径问题:确保 msedgedriver.exe 的路径正确,并且 Selenium 能够正确识别和服务对象。
无头模式下的显示问题:即使启用了无头模式,某些情况下仍可能出现一个短暂的白色窗口。这是因为浏览器在启动时初始化显示服务器。这种情况通常不会影响功能。
解决方案
1. 检查浏览器和驱动版本
确保你的 Microsoft Edge 浏览器和 msedgedriver.exe 的版本匹配。可以在这里找到 Edge 浏览器的版本:
edge --version
2. 使用新版无头模式
你已经在使用 --headless=new 参数,这应该是正确的做法。如果你的代码能够打印出标题,那么说明无头模式已经生效。
3. 检查代理设置
如果你在使用代理,确保代理服务器配置正确,并且能够正常访问目标网站。可以尝试在不使用代理的情况下测试代码,以排除代理问题。
4. 完整代码示例
以下是一个完整的示例代码,确保所有配置正确:
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options
import time
# 创建 Edge 浏览器选项
options = Options()
options.add_argument('--headless=new') # 启用新版无头模式
# 配置 chromedriver 路径
chromedriver_path = Service('./msedgedriver.exe')
# 创建浏览器实例
browser = webdriver.Edge(options=options, service=chromedriver_path)
# 访问网站
url = 'https://example.com' # 替换为目标网址
browser.get(url)
# 打印页面标题
print(browser.title)
print(2222222222)
# 等待一段时间
time.sleep(1)
# 关闭浏览器
browser.quit()
调试步骤
如果问题仍然存在,可以尝试以下调试步骤:
打印错误信息:在代码中添加更多的打印语句,以便捕捉任何错误信息。
检查日志:查看 Selenium 和浏览器的日志,以获取更多信息。
逐步调试:逐步调试代码,确保每一步都没有问题。
检查代理配置:确保代理配置正确,并且能够正常访问目标网站。
通过以上步骤,你应该能够找到问题的根源并解决它。如果还有其他问题,请在公众号:小助手龙小乐留言,看到后会回复。