Как запустить безголовый удаленный хром с помощью платформы робота

Я пытаюсь запустить хром без головы с наборами тестов для роботов. Мне удалось сделать это самостоятельно с помощью 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

person Dan W    schedule 18.10.2017    source источник
comment
Пропустите несколько ответов, теперь это однострочник: Open Browser http://www.yoursite.com headlesschrome (по крайней мере, если вы здесь для локального решения)   -  person Aaron McMillin    schedule 03.08.2018


Ответы (5)


Чтобы запустить безголовый, вам нужно установить аргументы и преобразовать их в возможности, чтобы их можно было использовать при использовании опции 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
person A. Kootstra    schedule 18.10.2017
comment
Для второго решения (Open Browser [...] chrome) можно сохранить вызов to_capabilities при передаче параметров как chrome_options=${chrome_options}. - person jotrocken; 20.02.2018
comment
@A.Kootstra, зачем тебе remote_url в открытом браузере? - person Eftychia Thomaidou; 01.10.2019
comment
При использовании Selenium Grid это URL-адрес Grid-сервера. - person A. Kootstra; 03.10.2019

В более новых версиях SeleniumLibrary (3.1.0) и Selenium (3.8.0) вы можете просто установить браузер на headlesschrome вместо chrome.

Также есть headlessfirefox.

Ex.

Open Browser      http://www.yoursite.com    headlesschrome

http://robotframework.org/SeleniumLibrary/SeleniumLibrary.html#Open%20Browser

person Joao Coelho    schedule 12.07.2018
comment
Рад, что прокрутил вниз! - person Aaron McMillin; 03.08.2018
comment
В примере откроется локальный безголовый хром. Вопрос был о подключении к Selenium Grid и запуске удаленного безголового экземпляра Chrome. - person A. Kootstra; 28.09.2018

Пожалуйста, попробуйте следующее. Запустите ключевое слово в настройках теста

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}
person bsd007    schedule 18.10.2017

Теперь вы можете использовать псевдонимы:

*** 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.

person sampoh    schedule 17.10.2019

Попробуйте эти два ключевых слова:

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()}

Первый запустит локальный хром, а второй запустит удаленный хром. Если вам нужно иметь возможность обрабатывать удаленный и локальный в одном ключевом слове, вы можете создать оболочку вокруг этих двух с логическим аргументом, который будет определять, какое ключевое слово вызывать.

person Verv    schedule 18.10.2017