【问题标题】:Does Selenium need display monitorSelenium 需要显示器吗
【发布时间】:2019-10-10 18:27:07
【问题描述】:

我正在使用 Selenium 打开一个网站,登录并从一个网站复制一些信息。但是它发生在我的工作站上并且有一个显示监视器。

我的 IT 团队希望将此流程转移到没有监视器的虚拟服务器上。

1.这个工作 - 即使我们在服务器上安装 Firefox 的 Chrome 2. 我们可以用 Chrome 浏览器吗? 3.任何其他方式-我们可以考虑使用Xserver

请告诉我。

【问题讨论】:

  • 不,您不需要监视器来满足您的需求。不,您不需要在场景中使用无头。 3. 您可以使用 VMWare、VirtualBox 和许多其他选项,但您应该考虑租用 VPS 可能比您想象的要便宜,并且要查看您的 VPS / VM 中发生的事情,您可以简单地使用众所周知的工具,例如远程桌面(windows自带)、AnyDesk、TeamViewer等……
  • Selenium 是一个测试自动化工具。如果您只是想“从一个网站复制一些信息”,则有更简单的方法可以做到这一点。例如看看curl

标签: selenium server virtual display monitor


【解决方案1】:

没有。要运行您的脚本,您不需要监视器。您可以通过远程连接访问您的虚拟机,并且可以从该机器开始执行。执行开始后,您可以关闭远程桌面会话,执行将继续在远程机器或虚拟服务器上运行。

我希望这会有所帮助。如果您有任何其他问题,请告诉我。

1.这是否有效 - 即使我们在服务器上安装 Chrome 或 Firefox - 是的,它会有效

2.我们能否使用 Chrome - headless 来实现这一点 - 如果您打算使用虚拟服务器只是为了执行,那么您不需要在 headless 模式下运行。对于不需要可见 UI shell 的环境,需要无头执行。下面的代码将帮助您在无头模式下运行脚本

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

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')  # Last I checked this was necessary.
driver = webdriver.Chrome("/usr/local/bin/chromedriver", chrome_options=options)
driver.get("https://google.com")
#code to extract the details
driver.quit()

3.任何其他方式 - 我们可以考虑使用 Xserver - 不确定

【讨论】:

  • 这个过程是自动发生的,间隔为 5 分钟,因此我们无法远程连接并开始执行。
  • @GeoV 您可以设置一个计划任务来为您启动它,您可以使用 TeamViewer 来查看正在发生的事情,而不会干扰流程本身。
【解决方案2】:

Chrome headless 应该可以解决您的问题 - 我过去曾通过一些自动化完成此操作并取得了成功。

请记住使用ChromeOptions 添加--headless 标志。您可能还需要调整其他一些 ChromeOptions - 我还必须添加 --disable-gpu--window-size=1920,1200 才能让我的工作正常。

【讨论】:

  • 我会尝试使用 --headless 标志
  • 我没有投反对票。为什么整个互联网都坚持使用--headless 标志,而不仅仅是chromeOptions.setHeadless(true),它会跟踪您可能需要的任何其他内容,例如--disable-gpu
  • C# 不支持这种语法,我也不确定 Python 是否支持。添加 --headless 参数是一种与语言无关的解决方案,这就是我更喜欢它的原因。 setHeadless(true) 的好点子——如果你喜欢的编码语言支持这个选项,那么这也是一个很好的途径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 2018-03-31
相关资源
最近更新 更多