Reputation: 890
I need to run my selenium test cases remotely in headless mode.
Currently, I am running below py.test command
py.test --driver remote --host selenium.host --port 4444 --capability browserName firefox --capability platform LINUX
And for headless mode, I need to handle that in conftest.py
file
But I need that option in command line, instead of handling that in conftest.py
file
@pytest.fixture
def chrome_options(chrome_options):
chrome_options.add_argument('--headless')
return chrome_options
@pytest.fixture
def firefox_options(firefox_options):
firefox_options.add_argument('-headless')
return firefox_options
Upvotes: 5
Views: 4627
Reputation: 104
See if this helps. An example app
def pytest_addoption(parser):
parser.addoption("--browser", action="store", default="firefox", help="Type in browser type")
parser.addoption("--executor", action="store", default="standalone", help="For selenium grid.")
parser.addoption("--url", action="store", default="http://the-internet.herokuapp.com", help="url")
@pytest.fixture(scope="function")
def open_browser(request):
browser = request.config.getoption("--browser")
executor = request.config.getoption("--executor")
if executor == "local" or executor == "" or executor == "standalone":
if browser == 'chrome':
driver = webdriver.Chrome()
else:
driver = webdriver.Firefox()
else:
if executor == "remote":
command_executor = 'http://localhost:4444/wd/hub'
else:
command_executor = 'http://' + executor + '/wd/hub' ## Expecting IP and Port. Eg. 1.1.1.1:4444
caps = {'browserName': os.getenv('BROWSER', browser)}
driver = webdriver.Remote(
command_executor=command_executor,
desired_capabilities=caps)
driver.implicitly_wait(10)
driver.maximize_window()
yield driver # Teardown
driver.close()
driver.quit()
Upvotes: 1