Python爬虫屋 2024-10-17 12:28 采纳率: 0%
浏览 11

selenium出现白色框

为什么现在Python驱动selenium驱动浏览器会出现一个白色框,然后我将代码修改成
options.add_argument('--headless=new')

配置chromedriver路径

chromedriver_path = Service(r'./msedgedriver.exe')

创建示例,连接真实浏览器

browser = webdriver.Edge(options=options, service=chromedriver_path)
browser.get(f'https://www.facebook.com/share/CFt95cHijjz5ciJc/')
print(browser.title)
print(2222222222)
time.sleep(1)
这样使用'--headless=new'会出现,但是old不会出现,可是也无法打印成功,显示连接报错,是因为我连接外网开了代理吗?但是我使用new却能正常打印出来title,虽然会出现白色框

img

  • 写回答

1条回答 默认 最新

  • 图苑 2024-10-17 12:53
    关注

    你在使用 Selenium 和 Edge 浏览器时遇到的问题可能与以下几个方面有关:

    1. Headless模式的兼容性--headless=new 参数是为 Chrome 浏览器引入的,用于启用新版的无头模式。Edge 浏览器(基于 Chromium 的版本)也应该支持这个参数。然而,如果你发现使用 --headless=new 时能够正常打印出标题,而使用 --headless=old 时出现问题,这可能是因为 --headless=old 参数在某些版本的 Edge 中不被支持或存在兼容性问题。

    2. 代理设置:如果你的代码在设置了代理的情况下无法正常工作,这可能是因为代理服务器的问题。确保你的代理服务器配置正确,并且能够正常访问目标网站。

    3. 浏览器驱动版本:确保你使用的 msedgedriver.exe 版本与你的 Microsoft Edge 浏览器版本相匹配。不匹配的版本可能导致各种问题。

    4. 环境变量和路径问题:确保 msedgedriver.exe 的路径正确,并且 Selenium 能够正确识别和服务对象。

    5. 无头模式下的显示问题:即使启用了无头模式,某些情况下仍可能出现一个短暂的白色窗口。这是因为浏览器在启动时初始化显示服务器。这种情况通常不会影响功能。

    解决方案

    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()
    

    调试步骤

    如果问题仍然存在,可以尝试以下调试步骤:

    1. 打印错误信息:在代码中添加更多的打印语句,以便捕捉任何错误信息。

    2. 检查日志:查看 Selenium 和浏览器的日志,以获取更多信息。

    3. 逐步调试:逐步调试代码,确保每一步都没有问题。

    4. 检查代理配置:确保代理配置正确,并且能够正常访问目标网站。

    通过以上步骤,你应该能够找到问题的根源并解决它。如果还有其他问题,请在公众号:小助手龙小乐留言,看到后会回复。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月17日