如何使用机器人框架运行无头 REMOTE chrome
Posted
技术标签:
【中文标题】如何使用机器人框架运行无头 REMOTE chrome【英文标题】:How to run headless REMOTE chrome using robot framework 【发布时间】:2018-03-30 10:39:58 【问题描述】:我正在尝试使用我的机器人框架测试套件运行 chrome headless。 我设法使用 selenium 使用 python 独立完成,如下所示:
options = webdriver.ChromeOptions()
options.add_argument('--headless')
my_driver = webdriver.Remote(command_executer=my_remote_address, desired_capabilities=options.to_capabilities)
下面的代码是我在机器人中做的,但是没有用:
$options= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
$options.add_argument= Set Variable add_argument=--headless
Create WebDriver Chrome chrome_options=$options
Open Browser http://www.google.com chrome
【问题讨论】:
跳过几个答案,它现在是一个单一的:Open Browser http://www.yoursite.com headlesschrome
(至少如果你在这里寻求本地解决方案)
【参考方案1】:
在较新版本的 SeleniumLibrary (3.1.0) 和 Selenium (3.8.0) 中,您只需将浏览器设置为 headlesschrome
而不是 chrome
。
还有headlessfirefox
可用。
例如
Open Browser http://www.yoursite.com headlesschrome
http://robotframework.org/SeleniumLibrary/SeleniumLibrary.html#Open%20Browser
【讨论】:
很高兴我向下滚动! 该示例将打开一个本地无头 chrome。问题是关于连接到 Selenium Grid 并启动远程无头 chrome 实例。【参考方案2】:要无头运行,您需要设置参数并将它们转换为功能,以便在使用 Remote Driver
选项时可以使用它们。这适用于 Open Browser
和 Create Webdriver
导航到 URL 的方式。
*** Settings ***
Library Selenium2Library
Suite Teardown Close All Browsers
*** Test Cases ***
Headless Chrome - Create Webdriver
$chrome_options = Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method $chrome_options add_argument headless
Call Method $chrome_options add_argument disable-gpu
$options= Call Method $chrome_options to_capabilities
Create Webdriver Remote command_executor=http://localhost:4444/wd/hub desired_capabilities=$options
Go to http://cnn.com
Maximize Browser Window
Capture Page Screenshot
Headless Chrome - Open Browser
$chrome_options = Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method $chrome_options add_argument headless
Call Method $chrome_options add_argument disable-gpu
$options= Call Method $chrome_options to_capabilities
Open Browser http://cnn.com browser=chrome remote_url=http://localhost:4444/wd/hub desired_capabilities=$options
Maximize Browser Window
Capture Page Screenshot
【讨论】:
对于第二种解决方案 (Open Browser [...] chrome
),当将选项传递为 chrome_options=$chrome_options
时,可以保存对 to_capabilities
的调用。
@A.Kootstra 为什么在打开的浏览器中需要remote_url
?
使用 Selenium Grid 时,这是 Grid Server 的 url。【参考方案3】:
请尝试以下。在测试设置中运行关键字
Running the tests in chrome headless
$chrome options = Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method $chrome options add_argument headless
Call Method $chrome options add_argument disable-gpu
Create Webdriver Chrome chrome_options=$chrome options
【讨论】:
【参考方案4】:您现在可以使用别名:
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
Firefox
Open Browser http://robotframework.org/ headlessfirefox
Capture Page Screenshot
[Teardown] Close All Browsers
Chrome
Open Browser http://robotframework.org/ headlesschrome
Capture Page Screenshot
[Teardown] Close All Browsers
见https://github.com/robotframework/SeleniumLibrary/pull/1011
【讨论】:
【参考方案5】:试试这两个关键字:
Open Chrome
[Arguments] $url $lang
$chrome_options= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method $chrome_options add_argument headless
Call Method $chrome_options add_argument disable-gpu
Create Webdriver Chrome chrome_options=$chrome_options
Go To $url
Open Remote Chrome
[Arguments] $url $remote_url $lang
$chrome_options= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method $chrome_options add_argument headless
Call Method $chrome_options add_argument disable-gpu
Open Browser $url Chrome remote_url=$remote_url desired_capabilities=$chrome_options.to_capabilities()
第一个将启动本地 chrome,而第二个将启动远程 chrome。如果您需要能够将远程与本地处理成单个关键字,您可以使用布尔参数围绕这两个创建一个包装器,该参数将确定要调用哪个关键字。
【讨论】:
【参考方案6】:$options= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method $options add_argument headless
Call Method $options add_argument disable-gpu
Create WebDriver Chrome chrome_options=$options
Goto https://www.cnn.com/
Wait Until Page Contains Politics today
Close Browser
【讨论】:
以上是关于如何使用机器人框架运行无头 REMOTE chrome的主要内容,如果未能解决你的问题,请参考以下文章
Firefox 无头在无头 redhat linux 机器上崩溃
ImportError:无法加载需要“tk”交互式框架的后端“TkAgg”,因为“无头”当前正在运行