【问题标题】:Python - Selenium node does not launch the Chrome browserPython - Selenium 节点不启动 Chrome 浏览器
【发布时间】:2021-11-03 10:27:21
【问题描述】:

我使用以下命令在同一台机器上启动了集线器和节点:

xvfb-run -a java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone.jar -role hub

xvfb-run -a java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone.jar -port 7777 -role node -hub http://192.168.111.253:4444/grid/register -browser browserName="chrome",version=ANY,platform=LINUX,maxInstances=5

我正在尝试使用以下代码实例化浏览器窗口:

options = webdriver.ChromeOptions()
options.add_argument("no-sandbox")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=800,600")
options.add_argument("--disable-dev-shm-usage")
browser = webdriver.Remote(
    command_executor=f"http://192.168.111.253:4444/wd/hub",
    options=options
)

browser.get(r"https://www.google.com")

页面获取成功,我可以使用 browser.page_source 查看页面的 HTML 代码,但 Chrome 窗口未在节点上打开。我根本没有指定无头选项。我正在使用 95 版的 Chrome 和 Chromedriver。

请注意,我在托管在充当 selenium 服务器和节点的同一台机器上的 jupyter 笔记本上运行代码。我正在从同一 LAN 上的另一台计算机访问笔记本。

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 您正在使用虚拟帧缓冲区(又名虚拟屏幕)。你怎么知道窗口没有出现在那个虚拟屏幕上?
  • @AlexeyR。在提供的选项中,我没有提到类似的东西。我是 Selenium 的初学者。你能详细说明一下吗?如果是这个原因,我们该怎么做才能看到一个实际的窗口?

标签: python selenium google-chrome selenium-webdriver selenium-chromedriver


【解决方案1】:

由于 UI 意味着渲染到某些图形设备,因此您必须有一个屏幕才能运行 UI 应用程序。虚拟帧缓冲区是一种虚拟屏幕,通常用于未插入屏幕的主机上。

因此,除非您处于上述情况,否则不应使用 xvfb-run,而是以正常方式运行节点,这意味着渲染到本地显示器。

如果您仍想使用虚拟屏幕,您可以尝试此解决方案来查看那里发生的情况:https://stackoverflow.com/a/28426615/8343843

P.S. - 我建议使用 docker Selenium 图像而不是在 xvfb 中运行浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多