【问题标题】:Possible to open/display/render a headless Selenium session?可以打开/显示/渲染无头 Selenium 会话吗?
【发布时间】:2018-07-06 04:23:29
【问题描述】:

我知道这有点违背无头自动化的目的,但是...

我有一个使用 Selenium 和 Chromedriver 在无头模式下运行的自动化测试。我宁愿让它保持无头运行,但偶尔会遇到真正需要查看和交互的错误。是否可以渲染无头会话并与之交互?也许通过在非无头浏览器中复制无头浏览器?我可以通过远程调试进行连接,但开发工具似乎不允许我查看呈现的页面或与任何东西进行交互。

我可以截屏,这很有帮助。但我真的在寻找交互的能力——有些拖放元素不能很好地与 Selenium 配合使用,偶尔会导致问题。

【问题讨论】:

  • 当您不希望 options.add_argument('headless') 无头时,您不能将其注释掉吗?
  • @OmarEinea 我需要在会话中处理错误。所以,我希望有一种方法可以开始无头,然后在需要时,在同一点打开/渲染相同的会话,根据需要进行交互,然后再次无头。我知道您可以附加到现有会话,但我无法让它呈现/复制它。
  • 所以连截图都行不通,对吧?
  • 你能做“browser.save_screenshot”吗?另外,也许尝试记录您的 browser.info 并查看 html?
  • @SteveJ:我可以截屏,这很有帮助。但我真的在寻找交互的能力——有些拖放元素不能很好地与 Selenium 一起工作,偶尔会引起问题。

标签: python selenium headless browser-automation


【解决方案1】:

您所要求的目前是不可能的。此外,这样的“功能”与 Selenium 无关,而是与浏览器的供应商有关。您可以搜索他们的错误跟踪器以查看是否已请求此类功能。

目前唯一可用的选项是在调试/开发测试期间运行完整的 GUI 浏览器。

【讨论】:

    【解决方案2】:

    ,无法打开/显示/渲染无头 Selenium 会话。

    以下是您可以根据您的情况/要求采取的步骤:

    • Chromedriver 在 headless 模式下偶尔会遇到错误:将容易出错的代码块放在 try-except 块中并调试根本原因。你也可以截图。

    • 我可以通过远程调试连接:不,您将无法连接到任何现有会话。详细讨论here

    • 无法正常工作的拖放元素:获取页面源并检查元素并确定合适的Locator Strategy

    【讨论】:

      【解决方案3】:

      其实这是可以的。

      您可以使用 ChromeOptions 中的“--remote-debugging-port”参数查看无头浏览器。例如,

      from selenium import webdriver
      from selenium.webdriver.chrome.options import Options
      
      chrome_options = Options()
      chrome_options.add_argument('--headless')
      chrome_options.add_argument('--remote-debugging-port=9222') # Recommended is 9222
      driver = webdriver.Chrome(options=chrome_options)
      

      然后在 Selenium 运行时,您可以在常规浏览器中转到 http://localhost:9222 以查看无头会话。它将显示 Chrome 打开的每个选项卡的链接,您可以通过单击链接查看/与每个页面交互。从那里,您将能够在 Selenium 运行其自动化测试时监控 Selenium/Chrome。

      【讨论】:

      • 谢谢!如果你想从外部机器连接到调试的浏览器,你应该再添加一个参数 chrome_options.add_argument('--remote-debugging-address=0.0.0.0') 或另一个外部 IP 地址。然后你可以去extenral_server_ip:9222 另一个重要的事情是,如果你得到空白的控制台页面,你可能应该在 chrome 的网站设置中允许不安全的内容(点击地址栏上的小锁图标)。
      • 哇哦,我从没想过用 0.0.0.0 在外部机器上调试。我一直在使用 SSH 并通过 ssh -L 绑定到端口来连接它。这是一个很好的提示,也谢谢你!
      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 2016-01-31
      • 2019-06-26
      • 2022-01-19
      • 2011-10-20
      相关资源
      最近更新 更多