Search code examples
pythonunit-testingselenium-webdriverautomated-testspython-unittest

Selenium: I want to choose which browser to use with invocation in Command Prompt


Currently, I have a .ini file called testcase.ini which looks something like this:

[TEST]
DRIVER_PATH = C:\Python\
BROWSER = CHROME
; BROWSER = EDGE
; BROWSER = FIREFOX
CHROME_PATH = C:\Program Files\Google\Chrome\Application\chrome.exe
; EDGE_PATH = C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
; FIREFOX_PATH = C:\Program Files\Mozilla Firefox\firefox.exe

To run my automated tests, I open a command prompt in my Test Plan folder and enter a command like this:

python TestPlan_LoginTest.py

Instead of going in to the testcase config file and commenting out which browsers I don't wish to use when running my automated tests, I'd like to be able to choose the browser when I invoke the test in the command prompt, i.e. something like this:

python TestPlan_LoginTest.py Firefox

or

python TestPlan_LoginTest.py Edge

If I don't include a browser in the invocation, it defaults to Chrome.

Is this possible with unittest? What changes would I need to make and where?


Solution

  • If you're using a pytest plugin called SeleniumBase, you can set the browser from the command-line. (It defaults to "chrome" if not specified.) Example:

    pytest test_demo_site.py --edge
    
    pytest my_first_test.py --firefox
    

    Or if you prefer to use your own framework, you can find the necessary code for setting pytest command-line options here in SeleniumBase: pytest_plugin.py

    That link shows you about using pytest_addoption(parser): as well as code such as:

        parser.addoption(
            "--edge",
            action="store_true",
            dest="use_edge",
            default=False""",
        )
    

    which lets you customize command-line options for use in tests.