Migrating Python tests to Device Farm desktop browser testing
Follow the steps in this topic to get your tests running on Python.
Important
This topic is written with the assumption you are using Python 3, Boto3, and pytest.
            As of January 1, 2020, Python 2 is officially no longer supported. For more information,
            see Sunsetting Python 2
To migrate your existing tests
- 
            
Add the AWS SDK for Python (Boto3) to your requirements. If you're using pipenv for your requirements management, run the following:
pipenv install boto3If you're using pip, add the following to your
requirements.txt:boto3 >= 1.10.44Make sure that the version listed here is correct and then run
pip install -r requirements.txtto install the Boto3. - 
            
Modify your test suite to use RemoteWebDriver. Wherever you initialize a
WebDriverinstance, configure aRemoteWebDriverinstance using the endpoint generated by the Device Farm API.- 
                    
Import the Device Farm classes:
import boto3 from selenium.webdriver import DesiredCapabilities from selenium.webdriver import Remote - 
                    
Instantiate a new
DeviceFarmClientwhere you create yourWebDriverclassMyPytestTests(): def setup_method(self, method): # step 2: Set up a client for boto3 # The AWS_ACCESS_KEY and AWS_SECRET_KEY will be inferred from the command line. devicefarm_client = boto3.client("devicefarm") - 
                    
Get a signed
WebDriverhub URL:testgrid_url_response = devicefarm_client.create_test_grid_url( projectArn= "arn:aws:devicefarm:us-west-2:111122223333:testgrid-project:123e4567-e89b-12d3-a456-426655440000", expiresInSeconds=300 ) - 
                    
Use the
DesiredCapabilitiesclass to specify the browser to test against:desired_capabilities = DesiredCapabilities.FIREFOX desired_capabilities["platform"] = "windows" - 
                    
Create your
RemoteWebDriverin place of your existingGeckoDriver,ChromeDriver, or similar.self.driver = Remote(testgrid_url_response['url'], desired_capabilities) - 
                    
Make sure to close your session after the tests are complete:
def teardown_method(self, method): self.driver.quit() 
 - 
                    
 - 
  
Modify your environment to include your AWS access and secret keys. The steps vary depending on your configuration, but involve setting two environment variables:
Important
We recommend that you follow the standard security advice of granting least privilege—that is, granting only the permissions required to perform a task—when you configure the AWS SDK and AWS CLI with credentials. For more information, see AWS Security Credentials and IAM Best Practices.
AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLEAWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY - 
            
Run your tests, including the following:
pytest -s 
For more information, see  SDK for Python
            (Boto3) API Reference