使用 Robot 框架在 Linux 机器上执行 headless chrome 浏览器

Posted

技术标签:

【中文标题】使用 Robot 框架在 Linux 机器上执行 headless chrome 浏览器【英文标题】:Execute headless chrome browser in Linux machine using Robot framework 【发布时间】:2021-07-27 12:03:30 【问题描述】:

我在 Linux 机器上可用的 Jenkins 管道中执行我的脚本。我正在尝试使用 Chrome 选项,并且仅添加了适用于 Linux 的 chrome 驱动程序。我收到以下错误。

WebDriverException:消息:未知错误:找不到 Chrome 二进制文件

请找到以下代码供您参考。

$result =    Replace String    $EXECDIR     //       \\
log     $result

$chrome_path      Catenate   SEPARATOR=      $result        /      Linux    /   chromedriver
log     $chrome_path
$options  Evaluate  sys.modules['selenium.webdriver'].ChromeOptions()  sys, selenium.webdriver
#Call Method  $options  add_argument  --headless
Call Method  $options  add_argument  --disable-gpu
Call Method  $options  add_argument  args: ['--disable-setuid-sandbox', '--no-sandbox']

$preferences =    Create Dictionary   setAcceptUntrustedCertificates=True    setAssumeUntrustedCertificateIssuer=True
Create WebDriver  Chrome   chrome_options=$options   desired_capabilities=$preferences      executable_path=$chrome_path
Set Window Size     $1400     $600
Maximize Browser Window
sleep    3s
Go to     $URL

【问题讨论】:

由于您正在发送二进制文件的路径,我想说您已经在尝试修复某些问题并且遇到了 Jenkins 用户无法访问 chrome 二进制文件的权限问题。我将首先使用 Jenkins 用户登录并检查 chrome 二进制文件是否在路径变量上 【参考方案1】:

错误是找不到 chrome 二进制文件(chrome,而不是 chromedriver)。您可以通过设置binary_location 选项来解决此问题:

$options.binary_location=  Set variable  /the/path/to/chrome

【讨论】:

以上是关于使用 Robot 框架在 Linux 机器上执行 headless chrome 浏览器的主要内容,如果未能解决你的问题,请参考以下文章

使用 Robot 框架实现 Selenium 网格

Robot Framework IDE (RIDE) 执行配置文件未显示

BZOJ 3938 Robot

在 Robot Framework 中使用关键字驱动的方法执行测试用例时显示错误

Pycharm for Robot 框架中的自动完成

[bzoj3938] [Uoj #88] Robot