Как запустить безгласный REMOTE-хром с использованием робота
Я пытаюсь запустить chrome без headless с моими наборами тестов для платформы robot.
Мне удалось сделать это независимо от 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
Ответы
Ответ 1
Для запуска без головок вам необходимо установить аргументы и преобразовать их в возможности, чтобы их можно было использовать при использовании параметра 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
Ответ 2
В более новых версиях 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
Ответ 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
Попробуйте эти два ключевых слова:
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()}
Сначала запустится локальный хром, а второй - запустить удаленный хром. Если вам нужно иметь возможность обрабатывать удаленное и локальное в одном ключевом слове, вы можете создать обертку вокруг этих двух с помощью логического аргумента, который определит, какое ключевое слово для вызова.
Ответ 5
${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
Ответ 6
Я создал примерный репозиторий и инструкции о том, как запускать Chrome и Firefox на родной, безголовой или с докере, а также включить таблицу сравнения для времени выполнения. Вы можете найти примеры на моей странице github https://github.com/shnigi/Docker-Headless-Testing-Demo
Основная идея. Однако в обоих тестах использовать API-интерфейс Selenium webdriver, чтобы сообщить 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
Вам понадобятся последние браузеры и драйверы.
Ответ 7
Теперь вы можете использовать псевдонимы:
*** 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