Perfecto Mobile Device TestCases-03-25-2021

This commit is contained in:
raj-TIP
2021-03-25 21:51:50 -05:00
parent 9f1a13fa6b
commit 423827a045
4 changed files with 99 additions and 33 deletions

View File

@@ -1,15 +1,24 @@
import os
import sys
import unittest
from unittest.loader import getTestCaseNames
import warnings
from perfecto.model.model import Job, Project
import urllib3
import argparse
#from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient,
# TestContext, TestResultFactory)
from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient,TestContext, TestResultFactory)
from appium import webdriver
#rom selenium import webdriver
import pytest
class TestConf(unittest.TestCase):
projectname = 'TIP Project'
projectversion = '1.0'
jobname = 'Tip-CI-Android-Regression'
jobnumber = 1
tags = 'TestTag'
#testCaseName = 'ToggleWifiModeAndroid'
def __init__(self, *args, **kwargs):
warnings.simplefilter("ignore", ResourceWarning)
@@ -19,26 +28,62 @@ class TestConf(unittest.TestCase):
self.securityToken = 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw'
self.host = 'tip.perfectomobile.com'
self.driver = None
# self.reporting_client = None
self.reporting_client = None
self.running = False
self.suitesetup = False
self.setupclient = None
self.tags = ''
self.testCaseName = 'ToggleWifiModeAndroid'
super(TestConf, self).__init__(*args, **kwargs)
def init_listener(self, projectname=None, projectversion=None, jobname=None, jobnumber=None):
"""
This key word helps to initialize the listener with proper project info
:param projectname: current project name
:param projectversion: current project version
:param jobname: the CI job name
:param jobnumber: the CI job number
:return:
"""
if projectname != None:
self.projectname = projectname
if projectversion != None:
self.projectversion = projectversion
if jobname != None:
self.jobname = jobname
if jobnumber != None:
self.jobnumber = int(float(jobnumber))
# def suitesetup_result(self):
# if self.suitesetup:
# if self.bi.get_variable_value('${TEST STATUS}') == 'FAIL':
# self.setupclient.test_stop(
## TestResultFactory.create_failure(self.bi.get_variable_value('${TEST MESSAGE}')))
# else:
# self.setupclient.test_stop(TestResultFactory.create_success())
# self.suitesetup = False
def setUp(self):
warnings.simplefilter("ignore", ResourceWarning)
capabilities = {
'platformName': 'Android',
'bundleId': 'com.android.settings',
'appPackage': 'com.android.settings',
'securityToken' : "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw",
}
self.driver = webdriver.Remote('https://tip.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities)
# self.create_reporting_client()
# self.reporting_client.test_start(self.id(), TestContext('Python', 'unittest'))
self.driver.implicitly_wait(20)
self.create_reporting_client()
#self.suitesetup_result()
self.reporting_client.test_start(self.testCaseName, TestContext([], 'TipCustomTag'))
def run(self, result=None):
self.currentResult = result # remember result for use in tearDown
self.currentResult = True # remember result for use in tearDown
#print('Before' + self.currentResult)
unittest.TestCase.run(self, result) # call superclass run method
#print('Result' + result)
def tearDown(self):
warnings.simplefilter("ignore", ResourceWarning)
@@ -46,15 +91,19 @@ class TestConf(unittest.TestCase):
print("-------------------------------------------")
print(" -- Tear Down --")
self.reporting_client.test_stop(TestResultFactory.create_success())
#print('Report-Url: ' + self.reporting_client.report_url() + '\n')
# if self.currentResult.wasSuccessful():
# print(" -- Test Successful --")
#self.reporting_client.test_stop(TestResultFactory.create_success())
# else:
# print(" -- Test Not Successful --")
#self.reporting_client.test_stop(TestResultFactory.create_failure('failure 4096' * 1000))
# self.reporting_client.test_stop(TestResultFactory.create_failure(self.currentResult.errors,
# self.currentResult.failures))
# self.reporting_client.test_stop(TestResultFactory.create_failure(self.currentResult.errors,self.currentResult.failures))
#Print report's url
#print('Report-Url: ' + self.reporting_client.report_url() + '\n')
print('Report-Url: ' + self.reporting_client.report_url() + '\n')
except Exception as e:
print (e.message)
@@ -70,6 +119,11 @@ class TestConf(unittest.TestCase):
print(" -- Exception Not Able To Quit --")
print (e.message)
# def create_reporting_client(self):
def create_reporting_client(self):
perfecto_execution_context = PerfectoExecutionContext(self.driver, self.tags, Job(self.jobname, self.jobnumber),
Project(self.projectname, self.projectversion))
#perfecto_execution_context = PerfectoExecutionContext(self.driver, ['execution tag1', 'execution tag2'])
# self.reporting_client = PerfectoReportiumClient(perfecto_execution_context)
self.reporting_client = PerfectoReportiumClient(perfecto_execution_context)

View File

@@ -42,7 +42,7 @@ class TestConf(unittest.TestCase):
#self.driver = webdriver.Remote('https://tip.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities)
self.driver = webdriver.Remote('https://ps.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities)
self.driver = webdriver.Remote('https://tip.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities)
self.driver.implicitly_wait(30)
# self.create_reporting_client()
# self.reporting_client.test_start(self.id(), TestContext('Python', 'unittest'))

View File

@@ -2,7 +2,7 @@ import time
import unittest
import warnings
#from perfecto import TestResultFactory
from perfecto import TestResultFactory
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
import argparse
@@ -11,21 +11,24 @@ from BaseClassAndroid import TestConf
class ReportingTests(TestConf):
#reportTagStart = reportTagStart()
def test_navigation(self):
warnings.simplefilter("ignore", ResourceWarning)
try:
# assert 'Perfecto' in self.driver.title
print("-------------------------------------------")
#REPORTIUM TEST START
#self.reporting_client.step_start("BasicConnectionTest")
#Open Setting Application
print("Opening Settings App..")
#self.reportTagStart()
self.reporting_client.step_start("Opening Settings App..")
params = {'identifier': 'com.android.settings'}
self.driver.execute_script('mobile:application:close', params)
self.driver.execute_script('mobile:application:open', params)
self.reporting_client.step_start("Load Wifi/BlueTooth/AirplaneMode Connection Settings..")
print("Load Wifi/BlueTooth/AirplaneMode Connection Settings..")
element = self.driver.find_element_by_xpath("//*[@text='Connections']")
element.click()
@@ -33,6 +36,7 @@ class ReportingTests(TestConf):
#Verifies if AP is connected to Wifi status
print("Verify Wifi Connection Status..")
self.reporting_client.step_start("Verify Wifi Connection Status..")
try:
WifiXpath = "//*[@text='Wi-Fi']/parent::*/android.widget.TextView[2]"
elementWifName = self.driver.find_element_by_xpath(WifiXpath)
@@ -42,6 +46,7 @@ class ReportingTests(TestConf):
print("Toggle Wifi AP Mode..")
self.reporting_client.step_start("Toggle Wifi AP Mode..")
try:
WifiInternet = self.driver.find_element_by_xpath("//*[@content-desc='Wi-Fi']")
WifiInternet.click()
@@ -51,6 +56,7 @@ class ReportingTests(TestConf):
#Ensure Wifi Radio Button Disabled
print("Verify Wifi Disconnected Status..")
self.reporting_client.step_start("Verify Wifi Disconnected Status..")
try:
WifiXpathDisconnected = "//*[@text='Wi-Fi']/parent::*/android.widget.TextView[2]"
elementWifiDiscont = self.driver.find_element_by_xpath(WifiXpathDisconnected)
@@ -58,7 +64,9 @@ class ReportingTests(TestConf):
except NoSuchElementException:
print("Warning...No Wifi Disconnected Msg...Check Xpath")
print("Toggle Wifi Radio Button On..")
self.reporting_client.step_start("Toggle Wifi Radio Button On..")
try:
#Toggle Wifi Radio Button
WifiInternet2 = self.driver.find_element_by_xpath("//*[@content-desc='Wi-Fi']")
@@ -68,6 +76,7 @@ class ReportingTests(TestConf):
#Verifies if AP is connected to Wifi status
print("Verify Wifi ReConnection Status..")
self.reporting_client.step_start("Verify Wifi ReConnection Status..")
try:
WifiXpathToggle = "//*[@text='Wi-Fi']/parent::*/android.widget.TextView[2]"
elementWifNameToggle = self.driver.find_element_by_xpath(WifiXpathToggle)
@@ -81,7 +90,7 @@ class ReportingTests(TestConf):
self.currentResult = False
#self.reporting_client.test_stop(TestResultFactory.create_failure("NoSuchElementException", ex))
print (ex.message)
self.currentResult = True
#self.currentResult = True
#self.reporting_client.test_stop(Tes
if __name__ == '__main__':
@@ -112,3 +121,6 @@ if __name__ == '__main__':
#print(str(args["cloud_name"]))
unittest.main()
#def reportTagStart(self, stepName):
# self.reporting_client.step_start(stepName)

View File

@@ -16,11 +16,11 @@ class TestConf(unittest.TestCase):
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
#Perfecto
self.securityToken = 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyODhhNDIyNS1jOTE1LTQwZDctOTc2YS04MDhiMWE3YTFmODYifQ.eyJqdGkiOiJkMmMwNzU5YS0yNWIyLTQ4ZmItYmViNC0wNzAxMWI4MDVmODMiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjE0MjI5MTUxLCJpc3MiOiJodHRwczovL2F1dGgucGVyZmVjdG9tb2JpbGUuY29tL2F1dGgvcmVhbG1zL3BzLXBlcmZlY3RvbW9iaWxlLWNvbSIsImF1ZCI6Imh0dHBzOi8vYXV0aC5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvcHMtcGVyZmVjdG9tb2JpbGUtY29tIiwic3ViIjoiMzkzYjMxYTQtNDJiZS00NmIxLTg5MGUtYmRlNzY3ZWEzYjQ2IiwidHlwIjoiT2ZmbGluZSIsImF6cCI6Im9mZmxpbmUtdG9rZW4tZ2VuZXJhdG9yIiwibm9uY2UiOiJmOTQ4MjI2Yi04YWQwLTQ1YTAtYmMzNC04NzQ5MzZjNDQ0NDgiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiIzMzVhNGM2My01ODE4LTQ0NmMtOTA2NC1iZWZiY2JkZWQ2N2MiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciIsInJlcG9ydF9hZG1pbiJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgb2ZmbGluZV9hY2Nlc3MifQ.BKnSYDAczir7suvt_5T44pJ5IaZLzsT_JwVAziR4pKg'
self.host = 'ps.perfectomobile.com'
#self.securityToken = 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyODhhNDIyNS1jOTE1LTQwZDctOTc2YS04MDhiMWE3YTFmODYifQ.eyJqdGkiOiJkMmMwNzU5YS0yNWIyLTQ4ZmItYmViNC0wNzAxMWI4MDVmODMiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjE0MjI5MTUxLCJpc3MiOiJodHRwczovL2F1dGgucGVyZmVjdG9tb2JpbGUuY29tL2F1dGgvcmVhbG1zL3BzLXBlcmZlY3RvbW9iaWxlLWNvbSIsImF1ZCI6Imh0dHBzOi8vYXV0aC5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvcHMtcGVyZmVjdG9tb2JpbGUtY29tIiwic3ViIjoiMzkzYjMxYTQtNDJiZS00NmIxLTg5MGUtYmRlNzY3ZWEzYjQ2IiwidHlwIjoiT2ZmbGluZSIsImF6cCI6Im9mZmxpbmUtdG9rZW4tZ2VuZXJhdG9yIiwibm9uY2UiOiJmOTQ4MjI2Yi04YWQwLTQ1YTAtYmMzNC04NzQ5MzZjNDQ0NDgiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiIzMzVhNGM2My01ODE4LTQ0NmMtOTA2NC1iZWZiY2JkZWQ2N2MiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciIsInJlcG9ydF9hZG1pbiJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgb2ZmbGluZV9hY2Nlc3MifQ.BKnSYDAczir7suvt_5T44pJ5IaZLzsT_JwVAziR4pKg'
#self.host = 'ps.perfectomobile.com'
#self.securityToken = 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw'
#self.host = 'tip.perfectomobile.com'
self.securityToken = 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw'
self.host = 'tip.perfectomobile.com'
self.driver = None
# self.reporting_client = None
@@ -42,7 +42,7 @@ class TestConf(unittest.TestCase):
#self.driver = webdriver.Remote('https://tip.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities)
self.driver = webdriver.Remote('https://ps.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities)
self.driver = webdriver.Remote('https://tip.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities)
self.driver.implicitly_wait(20)
# self.create_reporting_client()
# self.reporting_client.test_start(self.id(), TestContext('Python', 'unittest'))