web-dev-qa-db-fra.com

Comment utiliser du chrome REMOTE sans tête avec un framework de robot

J'essaie de faire tourner chrome sans tête avec mes suites de tests de framework de robots . J'ai réussi à le faire indépendamment avec python en utilisant Selenium comme suit:

options = webdriver.ChromeOptions()
options.add_argument('--headless')
my_driver = webdriver.Remote(command_executer=my_remote_address, desired_capabilities=options.to_capabilities)

Le code suivant est ce que je faisais dans le robot mais ne fonctionnais pas:

${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
5
Dan W

Pour exécuter sans tête, vous devez définir les arguments et les convertir en fonctionnalités afin de pouvoir les utiliser avec l'option Remote Driver. Cela fonctionne à la fois pour le Open Browser et le Create Webdriver pour naviguer vers une 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
8
A. Kootstra

Dans les versions plus récentes de SeleniumLibrary (3.1.0) et de Selenium (3.8.0), vous pouvez simplement définir le navigateur sur headlesschrome au lieu de chrome.

Il y a aussi headlessfirefox disponible.

Ex.

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

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

12
Joao Coelho

S'il vous plaît essayer le ci-dessous. Exécuter le mot clé dans la configuration du test

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}
2
bsd007

J'ai créé un exemple de référentiel et des instructions sur l'exécution de Chrome et Firefox natif, sans tête ou avec menu fixe, ainsi qu'un tableau comparatif des durées d'exécution. Vous pouvez trouver des exemples sur ma page github https://github.com/shnigi/Docker-Headless-Testing-Demo

L'idée principale est toutefois que, dans les deux tests, l'utilisation de l'API webdriver du Selenium indique à chromedriver et à geckodriver de lancer le navigateur avec certains arguments. Le mot clé Open Browser de SeleniumLibrary n’a pas cette fonctionnalité, mais Create Webdriver fait l’affaire.

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

Vous aurez besoin des derniers navigateurs et pilotes installés.

0
Shnigi

Essayez ces deux mots-clés:

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

Le premier lancera un chrome local, tandis que le second lancera un chrome à distance. Si vous devez être capable de gérer le distant par rapport au local en un mot-clé unique, vous pouvez créer un wrapper autour de ces deux mots avec un argument booléen qui déterminera le mot-clé à appeler.

0
Verv
${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
0
roshan