ロボットフレームワークテストスイートでchromeヘッドレスを実行しようとしています。次のように、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
ヘッドレスで実行するには、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
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
以下をお試しください。テストセットアップでキーワードを実行する
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}
サンプルリポジトリを作成して、ChromeとFirefoxネイティブ、ヘッドレスまたはドッカーを使用して実行する方法を作成し、実行時間の比較チャートも含めました。サンプルはgithubページ https://github.com/shnigi/Docker-Headless-Testing-Demo
ただし、主なアイデアは、両方のテストで、SeleniumのWebdriver APIを使用して、chromedriverとgeckodriverに引数を指定してブラウザを起動することです。 SeleniumLibraryのOpen Browserキーワードにはこの機能はありませんが、Create Webdriverにはこの機能があります。
Open Headless Chrome Browser to Page
${chrome_options}= Evaluate
sys.modules['Selenium.webdriver'].ChromeOptions() sys
Call Method ${chrome_options} add_argument test-type
Call Method ${chrome_options} add_argument --disable-extensions
Call Method ${chrome_options} add_argument --headless
Call Method ${chrome_options} add_argument --disable-gpu
Call Method ${chrome_options} add_argument --no-sandbox
Create Webdriver Chrome chrome_options=${chrome_options}
Set Window Size 1920 1080
Go To ${PAGE URL}
Firefox true headless
${firefox options}= Evaluate sys.modules['Selenium.webdriver'].firefox.webdriver.Options() sys, Selenium.webdriver
Call Method ${firefox options} add_argument -headless
Create Webdriver Firefox firefox_options=${firefox options}
Set Window Size 1920 1080
Go To ${PAGE URL}
Page Should Be Open
最新のブラウザとドライバーをインストールする必要があります。
次の2つのキーワードを試してください。
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()}
1つ目はローカルクロムを起動し、2つ目はリモートクロムを起動します。リモートとローカルを単一のキーワードに処理できるようにする必要がある場合は、呼び出す2つのキーワードを決定するブール引数を使用して、これら2つのラッパーを作成できます。
${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