How to run headless REMOTE chrome using robot framework

后端 未结 6 959
伪装坚强ぢ
伪装坚强ぢ 2020-12-14 09:52

I\'m trying to run chrome headless with my robot framework tests suites. I managed to do it independtly with python using selenium as follows:

options = webd         


        
相关标签:
6条回答
  • 2020-12-14 10:34
    ${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 讨论(0)
  • 2020-12-14 10:35

    In newer versions of SeleniumLibrary (3.1.0) and Selenium (3.8.0) you can simply set the browser to headlesschrome instead of chrome.

    There's also headlessfirefox available.

    Ex.

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

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

    0 讨论(0)
  • 2020-12-14 10:48

    You can now use aliases:

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

    See https://github.com/robotframework/SeleniumLibrary/pull/1011

    0 讨论(0)
  • 2020-12-14 10:49

    To run headless you need to set the arguments and convert them to capabilities so that they can be used when using the Remote Driver option. This works for both the Open Browser as well as the Create Webdriver way of navigating to a 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
    
    0 讨论(0)
  • 2020-12-14 10:52

    Try out these two keywords:

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

    First one will launch a local chrome, while the second one is to launch a remote chrome. If you need to be able to handle the remote vs. local into a single keyword, you can create a wrapper around these two with a boolean argument that will determine which keyword to call.

    0 讨论(0)
  • 2020-12-14 10:56

    Please try the below. Run the keyword in Test setup

    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}
    
    0 讨论(0)
提交回复
热议问题