예제 #1
0
    def setUp(self):
        ##
        ## IMPORTANT: Set the following parameters.
        ##
        testdroid_url = os.environ.get(
            'TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get(
            'TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_project_name = os.environ.get(
            'TESTDROID_PROJECT') or "Safari sample project"
        testdroid_testrun_name = os.environ.get(
            'TESTDROID_TESTRUN') or "My testrun"
        new_command_timeout = os.environ.get('TESTDROID_CMD_TIMEOUT') or '60'
        testdroid_test_timeout = os.environ.get(
            'TESTDROID_TEST_TIMEOUT') or '600'

        self.screenshot_dir = os.environ.get(
            'TESTDROID_SCREENSHOTS') or os.getcwd() + "/screenshots"
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        while testdroid_device == "":
            testdroid_device = deviceFinder.available_ios_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        self.utils = TDUtils(self.screenshot_dir)
        self.utils.log("Will save screenshots at: " + self.screenshot_dir)

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'safari'
        desired_capabilities_cloud[
            'testdroid_project'] = testdroid_project_name
        desired_capabilities_cloud[
            'testdroid_testrun'] = testdroid_testrun_name
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['platformName'] = 'iOS'
        desired_capabilities_cloud['deviceName'] = 'iOS Device'
        desired_capabilities_cloud['browserName'] = 'Safari'
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud[
            'testdroid_testTimeout'] = testdroid_test_timeout

        # Set up webdriver
        self.utils.log(
            "WebDriver request initiated. Waiting for response, this typically takes 2-3 mins"
        )
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)
        self.utils.update_driver(self.driver)
        test_url = "http://bitbar.github.io/testdroid-samples/"
        self.utils.log("Loading page " + test_url)
        self.driver.get(test_url)
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after or is used.
        ##
        self.screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_app = os.environ.get('TESTDROID_APP') or ""
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_project_name = os.environ.get('TESTDROID_PROJECT') or "Android sample project"
        testdroid_testrun_name = os.environ.get('TESTDROID_TESTRUN') or "My testrun"
        app_package = os.environ.get('TESTDROID_APP_PACKAGE') or 'com.bitbar.testdroid'
        app_activity = os.environ.get('TESTDROID_ACTIVITY') or '.BitbarSampleApplicationActivity'
        new_command_timeout = os.environ.get('TESTDROID_CMD_TIMEOUT') or '60'
        testdroid_test_timeout = os.environ.get('TESTDROID_TEST_TIMEOUT') or '600'

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_android_device()

        apiLevel = deviceFinder.device_API_level(testdroid_device)
        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        if apiLevel > 16:
            desired_capabilities_cloud['testdroid_target'] = 'Android'
        else:
            desired_capabilities_cloud['testdroid_target'] = 'Selendroid'

        desired_capabilities_cloud['testdroid_project'] = testdroid_project_name
        desired_capabilities_cloud['testdroid_testrun'] = testdroid_testrun_name
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['testdroid_app'] = testdroid_app
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'Android Phone'
        desired_capabilities_cloud['appPackage'] = app_package
        desired_capabilities_cloud['appActivity'] = app_activity
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['testdroid_testTimeout'] = testdroid_test_timeout

        log ("Will save screenshots at: " + self.screenshot_dir)
        # set up webdriver
        log ("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)
        log ("WebDriver response received")
예제 #3
0
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ##
        bitbar_url = os.environ.get('BITBAR_URL') or "https://cloud.bitbar.com"
        appium_url = os.environ.get('BITBAR_APPIUM_URL') or 'https://appium.bitbar.com/wd/hub'
        bitbar_apiKey = os.environ.get('BITBAR_APIKEY') or ""
        bitbar_project_name = os.environ.get('BITBAR_PROJECT') or "iOS sample project"
        bitbar_testrun_name = os.environ.get('BITBAR_TESTRUN') or "My testrun"
        bitbar_app = os.environ.get('BITBAR_APP') or ""
        bitbar_bundle_id = os.environ.get('BITBAR_BUNDLE_ID') or "com.bitbar.testdroid.BitbarIOSSample"
        new_command_timeout = os.environ.get('BITBAR_CMD_TIMEOUT') or '60'
        bitbar_test_timeout = os.environ.get('BITBAR_TEST_TIMEOUT') or '600'
        bitbar_find_device = os.environ.get('BITBAR_FINDDEVICE') or True
        automation_name = os.environ.get('BITBAR_AUTOMATION_NAME') or "XCUITest"

        self.screenshot_dir = os.environ.get('BITBAR_SCREENSHOTS') or os.getcwd() + "/screenshots"

        # Options to select device
        # 1) Set environment variable BITBAR_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you
        bitbar_device = os.environ.get('BITBAR_DEVICE') or ""

        deviceFinder = DeviceFinder(url=bitbar_url)
        if bitbar_device == "":
            # Loop will not exit until free device is found
            while bitbar_device == "":
                bitbar_device = deviceFinder.available_ios_device()

        print("Starting Appium test using device '%s'" % bitbar_device)

        self.utils = BitbarUtils(self.screenshot_dir)
        self.utils.log("Will save screenshots at: " + self.screenshot_dir)
        
        desired_capabilities_cloud = {}
        desired_capabilities_cloud['bitbar_apiKey'] = bitbar_apiKey
        desired_capabilities_cloud['bitbar_target'] = 'ios'
        desired_capabilities_cloud['bitbar_project'] = bitbar_project_name
        desired_capabilities_cloud['bitbar_testrun'] = bitbar_testrun_name
        desired_capabilities_cloud['bitbar_device'] = bitbar_device
        desired_capabilities_cloud['bitbar_app'] = bitbar_app
        desired_capabilities_cloud['platformName'] = 'iOS'
        desired_capabilities_cloud['deviceName'] = 'iPhone device'
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['bitbar_testTimeout'] = bitbar_test_timeout
        desired_capabilities_cloud['bitbar_findDevice'] = bitbar_find_device
        desired_capabilities_cloud['automationName'] = automation_name
        desired_capabilities_cloud['bundleId'] = bitbar_bundle_id

        # set up webdriver
        self.utils.log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")

        self.driver = webdriver.Remote(command_executor=appium_url, desired_capabilities=desired_capabilities_cloud)
        self.utils.update_driver(self.driver)
        self.utils.log("WebDriver response received")
def available_free_android_device():
    ret = []
    # Loop will not exit until free device is found
    deviceFinder = DeviceFinder()
    while True:
        d = deviceFinder.available_free_android_device()
        if d is not None:
            ret.append(d)
            return ret
    def setUp(self):
        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after 'or' is used.
        ##
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_project_name = os.environ.get('TESTDROID_PROJECT') or 'Appium Chrome Demo'
        testdroid_testrun_name = os.environ.get('TESTDROID_TESTRUN') or "My testrun"
        new_command_timeout = os.environ.get('TESTDROID_CMD_TIMEOUT') or '60'
        testdroid_test_timeout = os.environ.get('TESTDROID_TEST_TIMEOUT') or '600'

        self.screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or os.getcwd() + "/screenshots"
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_android_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        self.utils = TDUtils(self.screenshot_dir)
        self.utils.log("Will save screenshots at: " + self.screenshot_dir)

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'chrome'
        desired_capabilities_cloud['testdroid_project'] = testdroid_project_name
        desired_capabilities_cloud['testdroid_testrun'] = testdroid_testrun_name
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'AndroidDevice'
        desired_capabilities_cloud['browserName'] = 'chrome'
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['testdroid_testTimeout'] = testdroid_test_timeout

        # set up webdriver
        self.utils.log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)

        self.utils.update_driver(self.driver)
        test_url = "http://bitbar.github.io/testdroid-samples/"
        self.utils.log("Loading page "+ test_url)
        self.driver.get(test_url)
예제 #6
0
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ##
        testdroid_url = os.environ.get(
            'TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get(
            'TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_app = os.environ.get('TESTDROID_APP') or ""
        self.screenshot_dir = os.environ.get(
            'TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_project_name = os.environ.get(
            'TESTDROID_PROJECT') or "Appium iOS demo"
        testdroid_testrun_name = os.environ.get(
            'TESTDROID_TESTRUN') or "My testrun"

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        if testdroid_device == "":
            deviceFinder = DeviceFinder(url=testdroid_url)
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_ios_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {
            'testdroid_apiKey': testdroid_apiKey,
            'testdroid_target': 'ios',
            'testdroid_project': testdroid_project_name,
            'testdroid_testrun': testdroid_testrun_name,
            'testdroid_device': testdroid_device,
            'testdroid_app': testdroid_app,
            'testdroid_description': 'Appium project description',
            'platformName': 'iOS',
            'deviceName': 'iPhone device',
            'bundleId': 'com.bitbar.testdroid.BitbarIOSSample',
        }

        # set up webdriver
        log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins"
            )

        self.driver = webdriver.Remote(
            command_executor=appium_url,
            desired_capabilities=desired_capabilities_cloud)
        log("WebDriver response received")
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ##
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_project_name = os.environ.get('TESTDROID_PROJECT') or "iOS sample project"
        testdroid_testrun_name = os.environ.get('TESTDROID_TESTRUN') or "My testrun"
        testdroid_app = os.environ.get('TESTDROID_APP') or ""
        testdroid_bundle_id = os.environ.get('TESTDROID_BUNDLE_ID') or "com.bitbar.testdroid.BitbarIOSSample"
        new_command_timeout = os.environ.get('TESTDROID_CMD_TIMEOUT') or '60'
        testdroid_test_timeout = os.environ.get('TESTDROID_TEST_TIMEOUT') or '600'
        testdroid_find_device = os.environ.get('TESTDROID_FINDDEVICE') or "true"
        automation_name = os.environ.get('TESTDROID_AUTOMATION_NAME') or "XCUITest"

        self.screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or os.getcwd() + "/screenshots"
        log("Will save screenshots at: " + self.screenshot_dir)
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_ios_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'ios'
        desired_capabilities_cloud['testdroid_project'] = testdroid_project_name
        desired_capabilities_cloud['testdroid_testrun'] = testdroid_testrun_name
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['testdroid_app'] = testdroid_app
        desired_capabilities_cloud['platformName'] = 'iOS'
        desired_capabilities_cloud['deviceName'] = 'iPhone device'
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['testdroid_testTimeout'] = testdroid_test_timeout
        desired_capabilities_cloud['testdroid_findDevice'] = testdroid_find_device
        desired_capabilities_cloud['automationName'] = automation_name
        desired_capabilities_cloud['app'] = testdroid_bundle_id

        # set up webdriver
        log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")

        self.driver = webdriver.Remote(command_executor=appium_url, desired_capabilities=desired_capabilities_cloud)
        log("WebDriver response received")
    def setUp(self):
        ##
        ## IMPORTANT: Set the following parameters.
        ##
        testdroid_url = os.environ.get(
            'TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get(
            'TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        self.screenshotDir = os.environ.get(
            'TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_project_name = os.environ.get(
            'TESTDROID_PROJECT') or "Appium Safari demo"
        testdroid_testrun_name = os.environ.get(
            'TESTDROID_TESTRUN') or "My testrun"

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        if testdroid_device == "":
            deviceFinder = DeviceFinder(url=testdroid_url)
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_ios_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'safari'
        desired_capabilities_cloud[
            'testdroid_project'] = testdroid_project_name
        desired_capabilities_cloud[
            'testdroid_testrun'] = testdroid_testrun_name
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['platformName'] = 'iOS'
        desired_capabilities_cloud['deviceName'] = 'iOS Device'
        desired_capabilities_cloud['browserName'] = 'Safari'

        log("Will save screenshots at: " + self.screenshotDir)

        # Set up webdriver
        log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins"
            )
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)

        log("Loading page http://docs.testdroid.com")
        self.driver.get("http://docs.testdroid.com")

        self.screenShotCount = 1
예제 #9
0
    def setUp(self):
        #
        # IMPORTANT: Set the following parameters.
        #
        bitbar_url = os.environ.get('BITBAR_URL') or "https://cloud.bitbar.com"
        appium_url = os.environ.get('BITBAR_APPIUM_URL') or 'https://appium.bitbar.com/wd/hub'
        bitbar_apiKey = os.environ.get('BITBAR_APIKEY') or ""
        bitbar_project_name = os.environ.get('BITBAR_PROJECT') or "Safari sample project"
        bitbar_testrun_name = os.environ.get('BITBAR_TESTRUN') or "My testrun"
        new_command_timeout = os.environ.get('BITBAR_CMD_TIMEOUT') or '60'
        bitbar_test_timeout = os.environ.get('BITBAR_TEST_TIMEOUT') or '600'
        bitbar_find_device = os.environ.get('BITBAR_FINDDEVICE') or "true"
        automation_name = os.environ.get('BITBAR_AUTOMATION_NAME') or "XCUITest"

        self.screenshot_dir = os.environ.get('BITBAR_SCREENSHOTS') or os.getcwd() + "/screenshots"
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable BITBAR_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder find a free device
        bitbar_device = os.environ.get('BITBAR_DEVICE') or ""

        deviceFinder = DeviceFinder(url=bitbar_url)
        while bitbar_device == "":
            bitbar_device = deviceFinder.available_ios_device()

        print("Starting Appium test using device '%s'" % bitbar_device)

        self.utils = BitbarUtils(self.screenshot_dir)
        self.utils.log("Will save screenshots at: " + self.screenshot_dir)

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['bitbar_apiKey'] = bitbar_apiKey
        desired_capabilities_cloud['bitbar_target'] = 'safari'
        desired_capabilities_cloud['bitbar_project'] = bitbar_project_name
        desired_capabilities_cloud['bitbar_testrun'] = bitbar_testrun_name
        desired_capabilities_cloud['bitbar_device'] = bitbar_device
        desired_capabilities_cloud['platformName'] = 'iOS'
        desired_capabilities_cloud['deviceName'] = 'iOS Device'
        desired_capabilities_cloud['browserName'] = 'Safari'
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['bitbar_testTimeout'] = bitbar_test_timeout
        desired_capabilities_cloud['bitbar_findDevice'] = bitbar_find_device
        desired_capabilities_cloud['automationName'] = automation_name

        # Set up webdriver
        self.utils.log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)
        self.utils.update_driver(self.driver)
        self.utils.wait_until_xpath_matches('//*[contains(., "Automation for Apps")]')
        test_url = "https://bitbar.github.io/web-testing-target/"
        self.utils.log("Loading page " + test_url)
        self.driver.get(test_url)
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after or is used.
        ##
        self.screenshotDir = os.environ.get('TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        testdroid_username = os.environ.get('TESTDROID_USERNAME') or "*****@*****.**"
        testdroid_password = os.environ.get('TESTDROID_PASSWORD') or "password"
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(username=testdroid_username, password=testdroid_password, url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_android_device()

        apiLevel = deviceFinder.device_API_level(testdroid_device)
        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_username'] = testdroid_username
        desired_capabilities_cloud['testdroid_password'] = testdroid_password
        if apiLevel > 17:
            desired_capabilities_cloud['testdroid_target'] = 'Android'
        else:
            desired_capabilities_cloud['testdroid_target'] = 'Selendroid'
        desired_capabilities_cloud['testdroid_project'] = os.environ.get('TESTDROID_PROJECT') or 'Appium Android demo'
        desired_capabilities_cloud['testdroid_testrun'] = os.environ.get('TESTDROID_TESTRUN') or 'My testrun'
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['testdroid_app'] = 'sample/BitbarSampleApp.apk'
        #desired_capabilities_cloud['app'] = '/absolute/path/to/your/application.apk'
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'Android Phone'
        desired_capabilities_cloud['appPackage'] = 'com.bitbar.testdroid'
        desired_capabilities_cloud['appActivity'] = '.BitbarSampleApplicationActivity'

        desired_caps = desired_capabilities_cloud;

        log ("Will save screenshots at: " + self.screenshotDir)
        # set up webdriver
        log ("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_caps)
        log ("WebDriver response received")
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after or is used.
        ##
        self.screenshotDir = os.environ.get(
            'TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_url = os.environ.get(
            'TESTDROID_URL') or "https://cloud.testdroid.com"
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_app = os.environ.get('TESTDROID_APP') or ""
        appium_url = os.environ.get(
            'TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_android_device()

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'chrome'
        desired_capabilities_cloud[
            'testdroid_project'] = 'Appium Android Hybrid Demo'
        desired_capabilities_cloud['testdroid_testrun'] = 'TestRun 1'
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['testdroid_app'] = testdroid_app
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'Android Phone'
        desired_capabilities_cloud['automationName'] = 'selendroid'
        desired_capabilities_cloud[
            'appPackage'] = 'com.testdroid.sample.android'
        desired_capabilities_cloud['appActivity'] = '.MA_MainActivity'

        desired_caps = desired_capabilities_cloud

        log("Will save screenshots at: " + self.screenshotDir)

        # set up webdriver
        log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins"
            )
        self.driver = webdriver.Remote(appium_url, desired_caps)
        log("WebDriver response received")
예제 #12
0
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after or is used.
        ##
        self.screenshotDir = os.environ.get('TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_app = os.environ.get('TESTDROID_APP') or ""
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_android_device()

        apiLevel = deviceFinder.device_API_level(testdroid_device)
        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        if apiLevel > 16:
            desired_capabilities_cloud['testdroid_target'] = 'Android'
        else:
            desired_capabilities_cloud['testdroid_target'] = 'Selendroid'
        desired_capabilities_cloud['testdroid_project'] = os.environ.get('TESTDROID_PROJECT') or 'Android demo'
        desired_capabilities_cloud['testdroid_testrun'] = os.environ.get('TESTDROID_TESTRUN') or 'My testrun'
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['testdroid_app'] = testdroid_app
        #desired_capabilities_cloud['app'] = '/absolute/path/to/your/application.apk'
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'Android Phone'
        desired_capabilities_cloud['appPackage'] = 'com.bitbar.testdroid'
        desired_capabilities_cloud['appActivity'] = '.BitbarSampleApplicationActivity'

        desired_caps = desired_capabilities_cloud;

        log ("Will save screenshots at: " + self.screenshotDir)
        # set up webdriver
        log ("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_caps)
        log ("WebDriver response received")
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after 'or' is used.
        ##
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_project_name = os.environ.get('TESTDROID_PROJECT') or 'Appium Chrome Demo'
        testdroid_testrun_name = os.environ.get('TESTDROID_TESTRUN') or "My testrun"
        new_command_timeout = os.environ.get('TESTDROID_CMD_TIMEOUT') or '60'
        testdroid_test_timeout = os.environ.get('TESTDROID_TEST_TIMEOUT') or '600'

        self.screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or os.getcwd() + "/screenshots"
        log ("Will save screenshots at: " + self.screenshot_dir)
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_android_device()

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'chrome'
        desired_capabilities_cloud['testdroid_project'] = testdroid_project_name
        desired_capabilities_cloud['testdroid_testrun'] = testdroid_testrun_name
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'AndroidDevice'
        desired_capabilities_cloud['browserName'] = 'chrome'
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['testdroid_testTimeout'] = testdroid_test_timeout

        log ("Will save screenshots at: " + self.screenshot_dir)

        # set up webdriver
        log ("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)

        log ("Loading page http://docs.testdroid.com")
        self.driver.get("http://docs.testdroid.com")
    def setUp(self):
        ##
        ## IMPORTANT: Set the following parameters.
        ##
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_project_name = os.environ.get('TESTDROID_PROJECT') or "Safari sample project"
        testdroid_testrun_name = os.environ.get('TESTDROID_TESTRUN') or "My testrun"
        new_command_timeout = os.environ.get('TESTDROID_CMD_TIMEOUT') or '60'
        testdroid_test_timeout = os.environ.get('TESTDROID_TEST_TIMEOUT') or '600'
        testdroid_find_device = os.environ.get('TESTDROID_FINDDEVICE') or "true"
        automation_name = os.environ.get('TESTDROID_AUTOMATION_NAME') or "XCUITest"

        self.screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or os.getcwd() + "/screenshots"
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        while testdroid_device == "":
            testdroid_device = deviceFinder.available_ios_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        self.utils = TDUtils(self.screenshot_dir)
        self.utils.log("Will save screenshots at: " + self.screenshot_dir)

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'safari'
        desired_capabilities_cloud['testdroid_project'] = testdroid_project_name
        desired_capabilities_cloud['testdroid_testrun'] = testdroid_testrun_name
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['platformName'] = 'iOS'
        desired_capabilities_cloud['deviceName'] = 'iOS Device'
        desired_capabilities_cloud['browserName'] = 'Safari'
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['testdroid_testTimeout'] = testdroid_test_timeout
        desired_capabilities_cloud['testdroid_findDevice'] = testdroid_find_device
        desired_capabilities_cloud['automationName'] = automation_name

        # Set up webdriver
        self.utils.log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)
        self.utils.update_driver(self.driver)
        test_url = "http://bitbar.github.io/testdroid-samples/"
        self.utils.log("Loading page " + test_url)
        self.driver.get(test_url)
예제 #15
0
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ##
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_project_name = os.environ.get('TESTDROID_PROJECT') or "iOS sample project"
        testdroid_testrun_name = os.environ.get('TESTDROID_TESTRUN') or "My testrun"
        testdroid_app = os.environ.get('TESTDROID_APP') or ""
        testdroid_bundle_id = os.environ.get('TESTDROID_BUNDLE_ID') or "com.bitbar.testdroid.BitbarIOSSample"
        new_command_timeout = os.environ.get('TESTDROID_CMD_TIMEOUT') or '60'
        testdroid_test_timeout = os.environ.get('TESTDROID_TEST_TIMEOUT') or '600'
        testdroid_find_device = os.environ.get('TESTDROID_FINDDEVICE') or "true"

        self.screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or os.getcwd() + "/screenshots"
        log ("Will save screenshots at: " + self.screenshot_dir)
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_ios_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'ios'
        desired_capabilities_cloud['testdroid_project'] = testdroid_project_name
        desired_capabilities_cloud['testdroid_testrun'] = testdroid_testrun_name
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['testdroid_app'] = testdroid_app
        desired_capabilities_cloud['platformName'] = 'iOS'
        desired_capabilities_cloud['deviceName'] = 'iPhone device'
        desired_capabilities_cloud['bundleId'] = testdroid_bundle_id
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['testdroid_testTimeout'] = testdroid_test_timeout
        desired_capabilities_cloud['testdroid_findDevice'] = testdroid_find_device

        # set up webdriver
        log ("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")

        self.driver = webdriver.Remote(command_executor=appium_url, desired_capabilities=desired_capabilities_cloud)
        log ("WebDriver response received")
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after or is used.
        ##
        self.screenshotDir = os.environ.get('TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_app = os.environ.get('TESTDROID_APP') or ""
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_android_device()

        
        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'chrome'
        desired_capabilities_cloud['testdroid_project'] = 'Appium Android Hybrid Demo'
        desired_capabilities_cloud['testdroid_testrun'] = 'TestRun 1'
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['testdroid_app'] = testdroid_app
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'Android Phone'
        desired_capabilities_cloud['automationName'] = 'selendroid'
        desired_capabilities_cloud['appPackage'] = 'com.testdroid.sample.android'
        desired_capabilities_cloud['appActivity'] = '.MA_MainActivity'

        desired_caps = desired_capabilities_cloud;

        log ("Will save screenshots at: " + self.screenshotDir)

        # set up webdriver
        log ("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_caps)
        log ("WebDriver response received")
예제 #17
0
    def setUp(self):
        appium_Url = 'http://appium.testdroid.com/wd/hub'
        #appium_Url = 'http://localhost:4723/wd/hub'

        ##
        ## IMPORTANT: Set the following parameters.
        ##
        self.screenshot_dir = os.environ.get(
            'TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_url = os.environ.get(
            'TESTDROID_URL') or "https://cloud.testdroid.com"

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            deviceFinder = DeviceFinder(url=testdroid_url)
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_ios_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'safari'
        desired_capabilities_cloud['testdroid_project'] = 'Appium Safari Demo'
        desired_capabilities_cloud['testdroid_testrun'] = 'TestRun A'
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['platformName'] = 'iOS'
        desired_capabilities_cloud['deviceName'] = 'iOS Device'
        desired_capabilities_cloud['browserName'] = 'Safari'
        desired_caps = desired_capabilities_cloud

        log("Will save screenshots at: " + self.screenshot_dir)

        # Set up webdriver
        log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins"
            )
        self.driver = webdriver.Remote(appium_Url, desired_caps)
        self.driver.implicitly_wait(60)
예제 #18
0
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ##
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_username = os.environ.get('TESTDROID_USERNAME') or "*****@*****.**"
        testdroid_password = os.environ.get('TESTDROID_PASSWORD') or "password"
        self.screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_project_name = os.environ.get('TESTDROID_PROJECT') or "Appium iOS demo"
        testdroid_testrun_name = os.environ.get('TESTDROID_TESTRUN') or "My testrun"

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        if testdroid_device == "":
            deviceFinder = DeviceFinder(username=testdroid_username, password=testdroid_password, url=testdroid_url)
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_ios_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud={
                'testdroid_username': testdroid_username,
                'testdroid_password': testdroid_password,
                'testdroid_project': testdroid_project_name,
                'testdroid_target': 'ios',
                'testdroid_description': 'Appium project description',
                'testdroid_testrun': testdroid_testrun_name,
                'testdroid_device': testdroid_device,
                'testdroid_app': 'sample/BitbarIOSSample.ipa',
                'platformName': 'iOS',
                'deviceName': 'iPhone device',
                'bundleId': 'com.bitbar.testdroid.BitbarIOSSample',
        }
        
        # set up webdriver
        log ("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")

        self.driver = webdriver.Remote(command_executor=appium_url,desired_capabilities=desired_capabilities_cloud)
        log ("WebDriver response received")
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after 'or' is used.
        ##
        self.screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_project_name = os.environ.get('TESTDROID_PROJECT') or 'Appium Chrome Demo'
        testdroid_testrun_name = os.environ.get('TESTDROID_TESTRUN') or "My testrun"

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_android_device()

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'chrome'
        desired_capabilities_cloud['testdroid_project'] = testdroid_project_name
        desired_capabilities_cloud['testdroid_testrun'] = testdroid_testrun_name
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'AndroidDevice'
        desired_capabilities_cloud['browserName'] = 'chrome'

        log ("Will save screenshots at: " + self.screenshot_dir)

        # set up webdriver
        log ("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)

        log ("Loading page http://docs.testdroid.com")
        self.driver.get("http://docs.testdroid.com")
        self.screenShotCount = 1
예제 #20
0
    def setUp(self):
        appium_Url = 'http://appium.testdroid.com/wd/hub'
        #appium_Url = 'http://localhost:4723/wd/hub'

        ##
        ## IMPORTANT: Set the following parameters.
        ##
        self.screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            deviceFinder = DeviceFinder(url=testdroid_url)
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_ios_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'safari'
        desired_capabilities_cloud['testdroid_project'] = 'Appium Safari Demo'
        desired_capabilities_cloud['testdroid_testrun'] = 'TestRun A'
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['platformName'] = 'iOS'
        desired_capabilities_cloud['deviceName'] = 'iOS Device'
        desired_capabilities_cloud['browserName'] = 'Safari'
        desired_caps = desired_capabilities_cloud;
        
        log ("Will save screenshots at: " + self.screenshot_dir)
        
        # Set up webdriver
        log ("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_Url, desired_caps)
        self.driver.implicitly_wait(60)
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ##
        testdroid_url = os.environ.get("TESTDROID_URL") or "https://cloud.testdroid.com"
        appium_url = os.environ.get("TESTDROID_APPIUM_URL") or "http://appium.testdroid.com/wd/hub"
        testdroid_apiKey = os.environ.get("TESTDROID_APIKEY") or ""
        self.screenshot_dir = os.environ.get("TESTDROID_SCREENSHOTS") or "/absolute/path/to/desired/directory"
        testdroid_project_name = os.environ.get("TESTDROID_PROJECT") or "Appium iOS demo"
        testdroid_testrun_name = os.environ.get("TESTDROID_TESTRUN") or "My testrun"

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        deviceFinder = None
        testdroid_device = os.environ.get("TESTDROID_DEVICE") or ""

        if testdroid_device == "":
            deviceFinder = DeviceFinder(url=testdroid_url)
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_ios_device()

        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {}
        desired_capabilities_cloud["testdroid_apiKey"] = testdroid_apiKey
        desired_capabilities_cloud["testdroid_target"] = "safari"
        desired_capabilities_cloud["testdroid_project"] = testdroid_project_name
        desired_capabilities_cloud["testdroid_testrun"] = testdroid_testrun_name
        desired_capabilities_cloud["testdroid_device"] = testdroid_device
        desired_capabilities_cloud["platformName"] = "iOS"
        desired_capabilities_cloud["deviceName"] = "iOS Device"
        desired_capabilities_cloud["browserName"] = "Safari"
        desired_caps = desired_capabilities_cloud

        log("Will save screenshots at: " + self.screenshot_dir)

        # Set up webdriver
        log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_caps)
        self.driver.implicitly_wait(60)
예제 #22
0
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after or is used.
        ##
        testdroid_url = os.environ.get(
            'TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get(
            'TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_project_name = os.environ.get(
            'TESTDROID_PROJECT') or "Android sample project"
        testdroid_testrun_name = os.environ.get(
            'TESTDROID_TESTRUN') or "My testrun"
        testdroid_app = os.environ.get('TESTDROID_APP') or ""
        app_package = os.environ.get(
            'TESTDROID_APP_PACKAGE') or 'com.bitbar.testdroid'
        app_activity = os.environ.get(
            'TESTDROID_ACTIVITY') or '.BitbarSampleApplicationActivity'
        new_command_timeout = os.environ.get('TESTDROID_CMD_TIMEOUT') or '60'
        testdroid_test_timeout = os.environ.get(
            'TESTDROID_TEST_TIMEOUT') or '600'
        testdroid_find_device = os.environ.get(
            'TESTDROID_FINDDEVICE') or "true"

        self.screenshot_dir = os.environ.get(
            'TESTDROID_SCREENSHOTS') or os.getcwd() + "/screenshots"
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        # Loop will not exit until free device is found
        while testdroid_device == "":
            testdroid_device = deviceFinder.available_android_device()

        if "localhost" in appium_url:
            self.api_level = subprocess.check_output(
                ["adb", "shell", "getprop ro.build.version.sdk"])
        else:
            self.api_level = deviceFinder.device_API_level(testdroid_device)

        self.utils = TDUtils(self.screenshot_dir)
        self.utils.log("Will save screenshots at: " + self.screenshot_dir)

        self.utils.log("Device API level is %s" % self.api_level)
        self.utils.log("Starting Appium test using device '%s'" %
                       testdroid_device)

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_target'] = 'android'
        desired_capabilities_cloud['automationName'] = 'Appium'
        if self.api_level <= 16:
            desired_capabilities_cloud['testdroid_target'] = 'selendroid'
            desired_capabilities_cloud['automationName'] = 'Selendroid'

        desired_capabilities_cloud[
            'testdroid_project'] = testdroid_project_name
        desired_capabilities_cloud[
            'testdroid_testrun'] = testdroid_testrun_name
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['testdroid_app'] = testdroid_app
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'Android Phone'
        desired_capabilities_cloud['appPackage'] = app_package
        desired_capabilities_cloud['appActivity'] = app_activity
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud[
            'testdroid_testTimeout'] = testdroid_test_timeout
        desired_capabilities_cloud[
            'testdroid_findDevice'] = testdroid_find_device

        # set up webdriver
        self.utils.log(
            "WebDriver request initiated. Waiting for response, this typically takes 2-3 mins"
        )
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)
        self.utils.log("WebDriver response received")
        self.utils.update_driver(self.driver)
        self.utils.log("Driver session id: " + self.driver.session_id)
예제 #23
0
    def setUp(self):
        #
        # IMPORTANT: Set the following parameters.
        # You can set the parameters outside the script with environment
        # variables.
        # If env var is not set the string after or is used.
        #

        bitbar_url = os.environ.get('BITBAR_URL') or \
            "https://cloud.bitbar.com"
        appium_url = os.environ.get('BITBAR_APPIUM_URL') or \
            'https://appium.bitbar.com/wd/hub'
        bitbar_apiKey = os.environ.get('BITBAR_APIKEY') or ""
        bitbar_project = os.environ.get('BITBAR_PROJECT') or \
            'Android hybrid sample project'
        bitbar_testrun = os.environ.get('BITBAR_TESTRUN') or \
            'My testrun'
        bitbar_app = os.environ.get('BITBAR_APP') or ""
        app_package = os.environ.get('BITBAR_APP_PACKAGE') or \
            'com.testdroid.sample.android'
        app_activity = os.environ.get('BITBAR_ACTIVITY') or \
            '.MM_MainMenu'
        new_command_timeout = os.environ.get('BITBAR_CMD_TIMEOUT') or '60'
        bitbar_test_timeout = os.environ.get('BITBAR_TEST_TIMEOUT') or '600'

        self.screenshot_dir = os.environ.get('BITBAR_SCREENSHOTS') or \
            os.getcwd() + "/screenshots"
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable BITBAR_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for
        #    you
        bitbar_device = os.environ.get('BITBAR_DEVICE') or ""

        deviceFinder = DeviceFinder(url=bitbar_url)
        if bitbar_device == "":
            # Loop will not exit until free device is found
            while bitbar_device == "":
                bitbar_device = deviceFinder.available_android_device()

        self.utils = BitbarUtils(self.screenshot_dir)
        self.utils.log("Will save screenshots at: " + self.screenshot_dir)

        if "localhost" in appium_url:
            self.api_level = subprocess.check_output(
                ["adb", "shell", "getprop ro.build.version.sdk"])
        else:
            self.api_level = deviceFinder.device_API_level(bitbar_device)

        self.utils.log("Device API level is %s" % self.api_level)
        self.utils.log("Starting Appium test using device '%s'" %
                       bitbar_device)

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['bitbar_apiKey'] = bitbar_apiKey
        if self.api_level > 16:
            desired_capabilities_cloud['bitbar_target'] = 'android'
            desired_capabilities_cloud['automationName'] = 'Appium'
        else:
            desired_capabilities_cloud['bitbar_target'] = 'selendroid'
            desired_capabilities_cloud['automationName'] = 'Selendroid'

        desired_capabilities_cloud['bitbar_apiKey'] = bitbar_apiKey
        desired_capabilities_cloud['bitbar_project'] = bitbar_project
        desired_capabilities_cloud['bitbar_testrun'] = bitbar_testrun
        desired_capabilities_cloud['bitbar_device'] = bitbar_device
        desired_capabilities_cloud['bitbar_app'] = bitbar_app
        desired_capabilities_cloud['appPackage'] = app_package
        desired_capabilities_cloud['appActivity'] = app_activity
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'Android Phone'
        desired_capabilities_cloud['fullReset'] = False
        desired_capabilities_cloud['noReset'] = True
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['bitbar_testTimeout'] = bitbar_test_timeout

        # set up webdriver
        self.utils.log("WebDriver request initiated. Waiting for response, \
                        this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)
        self.utils.update_driver(self.driver)
        self.utils.log("WebDriver response received")
예제 #24
0
    def setUp(self):
        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after or is used.
        ##

        testdroid_url = os.environ.get('TESTDROID_URL') or "https://cloud.testdroid.com"
        appium_url = os.environ.get('TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_project = os.environ.get('TESTDROID_PROJECT') or 'Android hybrid sample project'
        testdroid_testrun = os.environ.get('TESTDROID_TESTRUN') or 'My testrun'
        testdroid_app = os.environ.get('TESTDROID_APP') or ""
        app_package = os.environ.get('TESTDROID_APP_PACKAGE') or 'com.testdroid.sample.android'
        app_activity = os.environ.get('TESTDROID_ACTIVITY') or '.MM_MainMenu'
        new_command_timeout = os.environ.get('TESTDROID_CMD_TIMEOUT') or '60'
        testdroid_test_timeout = os.environ.get('TESTDROID_TEST_TIMEOUT') or '600'

        self.screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or os.getcwd() + "/screenshots"
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_android_device()

        self.utils = TDUtils(self.screenshot_dir)
        self.utils.log("Will save screenshots at: " + self.screenshot_dir)

        if "localhost" in appium_url:
            self.api_level = subprocess.check_output(["adb", "shell", "getprop ro.build.version.sdk"])
        else:
            self.api_level = deviceFinder.device_API_level(testdroid_device)

        self.utils.log("Device API level is %s" % self.api_level)
        self.utils.log("Starting Appium test using device '%s'" % testdroid_device)

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        if self.api_level > 16:
            desired_capabilities_cloud['testdroid_target'] = 'android'
            desired_capabilities_cloud['automationName'] = 'android'
        else:
            desired_capabilities_cloud['testdroid_target'] = 'selendroid'
            desired_capabilities_cloud['automationName'] = 'selendroid'

        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_project'] = testdroid_project
        desired_capabilities_cloud['testdroid_testrun'] = testdroid_testrun
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['testdroid_app'] = testdroid_app
        desired_capabilities_cloud['appPackage'] = app_package
        desired_capabilities_cloud['appActivity'] = app_activity
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'Android Phone'

        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['testdroid_testTimeout'] = testdroid_test_timeout

        # set up webdriver
        self.utils.log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins")
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)
        self.utils.update_driver(self.driver)
        self.utils.log("WebDriver response received")
예제 #25
0
class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self, None)
        uic.loadUi('mainwindow.ui', self)
        self.resize(700, 500)

        self.plotWindow = PlotWindow()
        self.stackedPlots.addWidget(self.plotWindow)
        self.stackedPlots.setCurrentIndex(0)

        self.actionRefresh.triggered[bool].connect(self.refreshList)
        self.actionConnect.triggered[bool].connect(self.connectFromList)
        self.actionDisconnect.triggered[bool].connect(
            self.disconnectFromCurrentDevice)
        self.actionLock.toggled[bool].connect(self.hold)
        self.actionViewAll.toggled[bool].connect(self.autoSet)
        self.actionExport.triggered[bool].connect(self.exportData)
        self.actionQuit.triggered[bool].connect(self.quitApp)
        self.actionAbout.triggered[bool].connect(self.aboutApp)

        self.listDevices.itemSelectionChanged.connect(self.deviceListChanged)

        self.actionViewAll.setChecked(True)
        self.autoSet(self.actionViewAll.isChecked())

        self.ifaces = []
        self.port = None
        self.baud = 115200
        self.iface = None
        self.iface_thread = None

        self.initDeviceFinder()
        self.disableControls()

        self.deviceListChanged()

        self.statusBar().showMessage('Ready.')

    def deviceListChanged(self):
        if self.listDevices.count() > 0:
            self.actionConnect.setEnabled(True)
            self.enableControls()
        else:
            self.actionConnect.setEnabled(False)
            self.disableControls()

    def disableControls(self):
        self.plotWindow.setEnabled(False)
        self.actionDisconnect.setEnabled(False)
        self.actionLock.setEnabled(False)
        self.actionViewAll.setEnabled(False)
        self.actionExport.setEnabled(False)

    def enableControls(self):
        self.plotWindow.setEnabled(True)
        self.actionDisconnect.setEnabled(True)
        self.actionLock.setEnabled(True)
        self.actionViewAll.setEnabled(True)
        self.actionExport.setEnabled(True)

    def initDeviceFinder(self):
        self.device_finder = DeviceFinder()
        self.device_finder.foundDevice[str, SerialInterface].connect(
            self.gotNewDevice)
        self.device_finder.start()

    def gotNewDevice(self, port, iface):
        self.port = port
        self.listDevices.addItem(
            QtGui.QListWidgetItem(QtGui.QIcon('icons/device.png'), port))
        self.ifaces.append(iface)

        self.statusBar().showMessage('Found %d device(s).' %
                                     self.listDevices.count())

    def startSampling(self):
        self.iface_thread.start()

    def stopSampling(self):
        self.iface_thread.stop__()
        self.iface_thread.exit()

    def connectDevice(self):
        if not self.iface:
            self.iface = self.ifaces[self.listDevices.currentRow()]

        if self.iface:
            if not self.iface.isConnected():
                self.iface = SerialInterface(self.port, self.baud)
                self.iface.connectToArduino()

            if not self.iface.serial_conn.isOpen():
                self.iface.serial_conn.open()

            if self.iface.isConnected():
                if self.iface_thread:
                    del self.iface_thread

                self.iface_thread = SerialThread(self.iface)
                self.iface_thread.n_samples = 1000
                self.iface_thread.gotSamples[tuple, int].connect(
                    self.plotWindow.plotSamples)
                #self.iface_thread.deviceDisconnected.connect(self.disconnectFromCurrentDevice)

                self.startSampling()

                return True

        return False

    def refreshList(self):
        self.statusBar().showMessage('Searching...')

        for i in range(0, self.listDevices.count()):
            port = self.listDevices.item(i).text()
            self.device_finder.found.remove(port)

        self.listDevices.clear()
        self.ifaces = []

    def connectFromList(self):
        self.actionConnect.setEnabled(False)
        self.actionDisconnect.setEnabled(True)
        self.actionRefresh.setEnabled(False)

        #self.connectDevice(self.listDevices.currentItem().text())
        if self.connectDevice():
            self.enableControls()
        else:
            QtGui.QMessageBox.critical(
                self, 'Error',
                'Cannot connect to the device, refresh the list')

    def disconnectFromCurrentDevice(self):
        self.actionConnect.setEnabled(True)
        self.actionDisconnect.setEnabled(False)
        self.actionRefresh.setEnabled(True)
        self.disableControls()

        try:
            self.stopSampling()
            self.iface.disconnect()
        except:
            pass

        self.iface = None
        self.plotWindow.plot_item_a.clear()
        self.plotWindow.plot_item_p.clear()

    def exportData(self):
        self.plotWindow.scene().showExportDialog()

    def hold(self, checked):
        if checked:
            self.stopSampling()
        else:
            self.connectDevice()
            self.startSampling()

    def autoSet(self, checked):
        if checked:
            self.plotWindow.plot_item_a.enableAutoRange()
            self.plotWindow.plot_item_p.enableAutoRange()
        else:
            self.plotWindow.plot_item_a.disableAutoRange()
            self.plotWindow.plot_item_p.disableAutoRange()

    def quitApp(self):
        try:
            self.disconnectFromCurrentDevice()
        except:
            pass

        QtGui.QApplication.exit(0)

    def aboutApp(self):
        QtGui.QMessageBox.about(
            self, 'About',
            """<b>Spectrum Analyzer</b><br>Computer Peripherals Interface Project<br><b>By:</b><br>Sherif Adel Radwan<br>Mahmoud Sayed Zainhom<br>Abdelrahman Ghanem Abdelrady"""
        )

    def closeEvent(self, event):
        if self.iface:
            self.iface.disconnect()
예제 #26
0
 def initDeviceFinder(self):
     self.device_finder = DeviceFinder()
     self.device_finder.foundDevice[str, SerialInterface].connect(
         self.gotNewDevice)
     self.device_finder.start()
예제 #27
0
# -*- coding: utf-8 -*-

# from: https://github.com/bitbar/testdroid-samples/blob/03fc043ba98235b9ea46a0ab8646f3b20dd1960e/appium/sample-scripts/python/testdroid_safari.py

import os
from device_finder import DeviceFinder

# Demonstrate finding available free iOS and Android devices.

testdroid_username = os.environ['TESTDROID_USERNAME']
testdroid_password = os.environ['TESTDROID_PASSWORD']

## DeviceFinder can be used to find available freemium device for testing
deviceFinder = DeviceFinder(testdroid_username, testdroid_password)
testdroid_device = ""

## Safari testing iPad 3 freemium device not yet supported as it is iOS 8.2 device
while testdroid_device == "" or testdroid_device == "iPad 3 A1416 8.2":
    testdroid_device = deviceFinder.available_free_ios_device()

testdroid_device = ""
while testdroid_device == "":
    testdroid_device = deviceFinder.available_free_android_device()
    print (time.strftime("%H:%M:%S") + ": " + msg)

appium_Url = 'http://appium.testdroid.com/wd/hub';

##
## IMPORTANT: Set the following parameters.
##
screenshotDir= "/absolute/path/to/desired/directory"
testdroid_username = "******"
testdroid_password = "******"

# Device can be manually defined, by device name found from Testdroid Cloud
# testdroid_device = "LG Google Nexus 5 D821 4.4"
#
# DeviceFinder can be used to find available free device for testing
deviceFinder = DeviceFinder(testdroid_username, testdroid_password)
testdroid_device = ""
while testdroid_device == "":
    testdroid_device = deviceFinder.available_free_android_device()

print "Starting Appium test using device '%s'" % testdroid_device

desired_capabilities_cloud = {}
desired_capabilities_cloud['testdroid_username'] = testdroid_username
desired_capabilities_cloud['testdroid_password'] = testdroid_password
desired_capabilities_cloud['testdroid_target'] = 'Android'
desired_capabilities_cloud['testdroid_project'] = 'Appium 1.2.0 Android Demo'
desired_capabilities_cloud['testdroid_testrun'] = 'TestRun 1'
desired_capabilities_cloud['testdroid_device'] = testdroid_device
desired_capabilities_cloud['testdroid_app'] = 'sample/BitbarSampleApp.apk'
#desired_capabilities_cloud['app'] = '/absolut/path/to/your/application.apk'
예제 #29
0
class DeviceManager(QWidget):
    """Widget for device management"""

    usb_table = list()
    # in ms
    table_update_interval = 1000
    dev_finder = DeviceFinder()

    def __init__(self, parent=None):
        """Adds elements to widget"""
        super(DeviceManager, self).__init__(parent)

        block_device_table_label = QLabel("Block devices:")
        mtp_device_table_label = QLabel("MTP devices:")
        connection_log_label = QLabel("Device connection log:")

        self.unmount_button = QPushButton("Unmount selected drives")
        self.reload_mtp_list_button = QPushButton("Reload MTP list")
        self.connection_log = QTextBrowser()

        self.block_device_table_widget = QTableWidget()
        self.mtp_device_table_widget = QTableWidget()
        self.block_header = [
            "Device", "Label", "Mount point", "Total", "Free", "Used"
        ]
        self.mtp_header = [
            "Manufacturer", "Model", "Total", "Free", "Used",
            "Storage Description"
        ]

        self.table_view_setup(self.block_device_table_widget,
                              self.block_header)
        self.table_view_setup(self.mtp_device_table_widget, self.mtp_header)

        self.main_layout_init(block_device_table_label, connection_log_label,
                              mtp_device_table_label)
        self.setWindowTitle("USB Manager")

        self.usb_table = self.dev_finder.get_usb_table()
        self.update_table_widget(self.usb_table)
        self.reload_device_table()

        self.unmount_button.pressed.connect(self.unmount_button_handler)
        self.reload_mtp_list_button.pressed.connect(
            self.reload_mtp_list_button_handler)

    def table_view_setup(self, table_widget, header):
        table_widget.setEditTriggers(QAbstractItemView.NoEditTriggers)
        table_widget.setColumnCount(len(header))
        table_widget.setHorizontalHeaderLabels(header)
        table_widget.setSelectionBehavior(QAbstractItemView.SelectRows)

    def reload_mtp_list_button_handler(self):
        mtp_list = self.dev_finder.get_mtp_devices()
        self.mtp_device_table_widget.clear()
        self.mtp_device_table_widget.setHorizontalHeaderLabels(self.mtp_header)
        self.mtp_device_table_widget.setRowCount(len(mtp_list))
        i = 0
        for device in mtp_list:
            j = 0
            for field in device:
                self.mtp_device_table_widget.setItem(i, j,
                                                     QTableWidgetItem(field))
                j += 1
            i += 1

    def main_layout_init(self, block_device_table_label, connection_log_label,
                         mtp_device_table_label):
        grid_layout = self.grid_layout_init(block_device_table_label,
                                            mtp_device_table_label)
        vbox_layout = self.vbox_layout_init(connection_log_label)
        main_layout = QGridLayout()
        main_layout.addLayout(grid_layout, 0, 0)
        main_layout.addLayout(vbox_layout, 1, 0)
        self.setLayout(main_layout)

    def vbox_layout_init(self, connection_log_label):
        vbox_layout = QVBoxLayout()
        vbox_layout.addWidget(connection_log_label)
        vbox_layout.addWidget(self.connection_log)
        return vbox_layout

    def grid_layout_init(self, block_device_table_label,
                         mtp_device_table_label):
        grid_layout = QGridLayout()
        grid_layout.addWidget(block_device_table_label, 0, 0, Qt.AlignCenter)
        grid_layout.addWidget(mtp_device_table_label, 0, 1, Qt.AlignCenter)
        grid_layout.addWidget(self.block_device_table_widget, 1, 0)
        grid_layout.addWidget(self.mtp_device_table_widget, 1, 1)
        grid_layout.addWidget(self.unmount_button, 2, 0)
        grid_layout.addWidget(self.reload_mtp_list_button, 2, 1)
        return grid_layout

    def unmount_button_handler(self):
        """Unmount selected devices if they are not busy"""
        selected_fields = self.block_device_table_widget.selectedItems()
        for item in selected_fields:
            for device in self.usb_table:
                if item.text() == device[0] and len(device) > 2:
                    res = os.system("umount " + device[2])
                    if res:
                        self.connection_log.append(device[2] + "is busy")
                    else:
                        self.connection_log.append(device[2] + " is unmounted")
        self.usb_table = self.dev_finder.get_usb_table()
        self.update_table_widget(self.usb_table)

    def reload_device_table(self):
        """Gather info about connected devices"""
        new_usb_table = self.dev_finder.get_usb_table()
        self.remove_event_check(new_usb_table)
        self.connect_event_check(new_usb_table)
        if self.usb_table != new_usb_table:
            self.update_table_widget(new_usb_table)
            self.usb_table = new_usb_table
        QTimer.singleShot(self.table_update_interval, self.reload_device_table)

    def update_table_widget(self, new_usb_table):
        """Update connected devices table"""
        self.block_device_table_widget.clear()
        self.block_device_table_widget.setHorizontalHeaderLabels(
            self.block_header)
        self.block_device_table_widget.setRowCount(len(new_usb_table))
        i = 0
        for device in new_usb_table:
            j = 0
            for field in device:
                self.block_device_table_widget.setItem(i, j,
                                                       QTableWidgetItem(field))
                j += 1
            i += 1

    def connect_event_check(self, new_usb_table):
        """Show message on device connection"""
        for new_table_device in new_usb_table:
            found = False
            for device in self.usb_table:
                if new_table_device[0] == device[0]:
                    found = True
                    break
            if not found:
                self.connection_log.append(new_table_device[1] +
                                           " was connected")

    def remove_event_check(self, new_usb_table):
        """Show message on device remove"""
        for device in self.usb_table:
            found = False
            for new_table_device in new_usb_table:
                if device[0] == new_table_device[0]:
                    found = True
                    break
            if not found:
                self.connection_log.append(device[1] + " was removed")
예제 #30
0
class DeviceManager(QWidget):

    usb_table = []
    table_update_interval = 1000
    dev_finder = DeviceFinder()

    def __init__(self, parent=None):
        super(DeviceManager, self).__init__(parent)

        block_device_table_label = QLabel("Block devices:")
        mtp_device_table_label = QLabel("MTP devices:")

        self.unmount_button = QPushButton("Unmount selected drives")
        self.reload_mtp_list_button = QPushButton("Reload MTP list")

        self.block_device_table_widget = QTableWidget()
        self.mtp_device_table_widget = QTableWidget()
        self.block_header = [
            "Device", "Label", "Mount point", "Total", "Free", "Used"
        ]
        self.mtp_header = [
            "Manufacturer", "Model", "Total", "Free", "Used",
            "Storage Description"
        ]

        self.table_view_setup(self.block_device_table_widget,
                              self.block_header)
        self.table_view_setup(self.mtp_device_table_widget, self.mtp_header)

        self.grid_layout_init(block_device_table_label, mtp_device_table_label)
        self.setWindowTitle("USB Manager")

        self.usb_table = self.dev_finder.get_usb_table()
        self.update_table_widget(self.usb_table)
        self.reload_device_table()

        self.unmount_button.pressed.connect(self.unmount_button_handler)
        self.reload_mtp_list_button.pressed.connect(
            self.reload_mtp_list_button_handler)

    def table_view_setup(self, table_widget, header):
        table_widget.setEditTriggers(QAbstractItemView.NoEditTriggers)
        table_widget.setColumnCount(len(header))
        table_widget.setHorizontalHeaderLabels(header)
        table_widget.setSelectionBehavior(QAbstractItemView.SelectRows)

    def reload_mtp_list_button_handler(self):
        mtp_list = self.dev_finder.get_mtp_devices()
        self.mtp_device_table_widget.clear()
        self.mtp_device_table_widget.setHorizontalHeaderLabels(self.mtp_header)
        self.mtp_device_table_widget.setRowCount(len(mtp_list))
        for i, device in enumerate(mtp_list):
            for j, field in enumerate(device):
                self.mtp_device_table_widget.setItem(i, j,
                                                     QTableWidgetItem(field))

    def grid_layout_init(self, block_device_table_label,
                         mtp_device_table_label):
        grid_layout = QGridLayout()
        grid_layout.addWidget(block_device_table_label, 0, 0, Qt.AlignCenter)
        grid_layout.addWidget(mtp_device_table_label, 0, 1, Qt.AlignCenter)
        grid_layout.addWidget(self.block_device_table_widget, 1, 0)
        grid_layout.addWidget(self.mtp_device_table_widget, 1, 1)
        grid_layout.addWidget(self.unmount_button, 2, 0)
        grid_layout.addWidget(self.reload_mtp_list_button, 2, 1)
        self.setLayout(grid_layout)

    def unmount_button_handler(self):
        """Unmount selected devices if they are not busy"""
        selected_fields = self.block_device_table_widget.selectedItems()
        for item in selected_fields:
            for device in self.usb_table:
                if item.text() == device[0] and len(device) > 2:
                    res = os.system("umount " + device[2])
        self.usb_table = self.dev_finder.get_usb_table()
        self.update_table_widget(self.usb_table)

    def reload_device_table(self):
        """Gather info about connected devices"""
        new_usb_table = self.dev_finder.get_usb_table()
        usb_table = []
        for i in new_usb_table:
            if len(i) > 2:
                usb_table.append(i)
        new_usb_table = usb_table
        if self.usb_table != new_usb_table:
            self.update_table_widget(new_usb_table)
            self.usb_table = new_usb_table
        QTimer.singleShot(self.table_update_interval, self.reload_device_table)

    def update_table_widget(self, new_usb_table):
        """Update connected devices table"""
        self.block_device_table_widget.clear()
        self.block_device_table_widget.setHorizontalHeaderLabels(
            self.block_header)
        self.block_device_table_widget.setRowCount(len(new_usb_table))

        for i, device in enumerate(new_usb_table):
            for j, field in enumerate(device):
                self.block_device_table_widget.setItem(i, j,
                                                       QTableWidgetItem(field))
예제 #31
0
testdroid_username = os.environ.get('TESTDROID_USERNAME') or "*****@*****.**"
testdroid_password = os.environ.get('TESTDROID_PASSWORD') or "password"
screenshot_dir = os.environ.get('TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
testdroid_project_name = os.environ.get('TESTDROID_PROJECT') or "Appium iOS demo"
testdroid_testrun_name = os.environ.get('TESTDROID_TESTRUN') or "My testrun"

# Options to select device
# 1) Set environment variable TESTDROID_DEVICE
# 2) Set device name to this python script
# 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

deviceFinder = None
testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

if testdroid_device == "":
    deviceFinder = DeviceFinder(username=testdroid_username, password=testdroid_password, url=testdroid_url)
    # Loop will not exit until free device is found
    while testdroid_device == "":
        testdroid_device = deviceFinder.available_free_ios_device()

print "Starting Appium test using device '%s'" % testdroid_device

desired_capabilities_cloud={
        'testdroid_username': testdroid_username,
        'testdroid_password': testdroid_password,
        'testdroid_project': testdroid_project_name,
        'testdroid_target': 'ios',
        'testdroid_description': 'Appium project description',
        'testdroid_testrun': testdroid_testrun_name,
        'testdroid_device': testdroid_device,
        'testdroid_app': 'sample/BitbarIOSSample.ipa',
예제 #32
0
    def setUp(self):
        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after 'or' is used.
        ##
        bitbar_url = os.environ.get('BITBAR_URL') or \
            "https://cloud.bitbar.com"
        appium_url = os.environ.get('BITBAR_APPIUM_URL') or \
            'https://appium.bitbar.com/wd/hub'
        bitbar_apiKey = os.environ.get('BITBAR_APIKEY') or ""
        bitbar_project_name = os.environ.get('BITBAR_PROJECT') or \
            'Appium Chrome Demo'
        bitbar_testrun_name = os.environ.get('BITBAR_TESTRUN') or \
            "My testrun"
        new_command_timeout = os.environ.get('BITBAR_CMD_TIMEOUT') or '60'
        bitbar_test_timeout = os.environ.get('BITBAR_TEST_TIMEOUT') or '600'
        bitbar_find_device = os.environ.get('BITBAR_FINDDEVICE') or "true"

        self.screenshot_dir = os.environ.get('BITBAR_SCREENSHOTS') or \
            os.getcwd() + "/screenshots"
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable BITBAR_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you

        bitbar_device = os.environ.get('BITBAR_DEVICE') or ""

        deviceFinder = DeviceFinder(url=bitbar_url)
        if bitbar_device == "":
            # Loop will not exit until free device is found
            while bitbar_device == "":
                bitbar_device = deviceFinder.available_android_device()

        print("Starting Appium test using device '%s'" % bitbar_device)

        self.utils = BitbarUtils(self.screenshot_dir)
        self.utils.log("Will save screenshots at: " + self.screenshot_dir)

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['bitbar_apiKey'] = bitbar_apiKey
        desired_capabilities_cloud['bitbar_target'] = 'chrome'
        desired_capabilities_cloud['bitbar_project'] = bitbar_project_name
        desired_capabilities_cloud['bitbar_testrun'] = bitbar_testrun_name
        desired_capabilities_cloud['bitbar_device'] = bitbar_device
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'AndroidDevice'
        desired_capabilities_cloud['browserName'] = 'chrome'
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud['bitbar_testTimeout'] = bitbar_test_timeout
        desired_capabilities_cloud['bitbar_findDevice'] = bitbar_find_device

        # set up webdriver
        self.utils.log(
            "WebDriver request initiated. Waiting for response, this typically takes 2-3 mins"
        )
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)

        self.utils.update_driver(self.driver)
        test_url = "https://bitbar.github.io/web-testing-target/"
        self.utils.log("Loading page " + test_url)
        self.driver.get(test_url)
예제 #33
0
    def setUp(self):

        ##
        ## IMPORTANT: Set the following parameters.
        ## You can set the parameters outside the script with environment variables.
        ## If env var is not set the string after or is used.
        ##
        self.screenshot_dir = os.environ.get(
            'TESTDROID_SCREENSHOTS') or "/absolute/path/to/desired/directory"
        testdroid_url = os.environ.get(
            'TESTDROID_URL') or "https://cloud.testdroid.com"
        testdroid_apiKey = os.environ.get('TESTDROID_APIKEY') or ""
        testdroid_app = os.environ.get('TESTDROID_APP') or ""
        appium_url = os.environ.get(
            'TESTDROID_APPIUM_URL') or 'http://appium.testdroid.com/wd/hub'
        app_package = os.environ.get(
            'TESTDROID_APP_PACKAGE') or 'com.testdroid.sample.android'
        app_activity = os.environ.get(
            'TESTDROID_ACTIVITY') or '.MA_MainActivity'
        testdroid_project = os.environ.get(
            'TESTDROID_PROJECT') or 'Android hybrid sample project'
        testdroid_testrun = os.environ.get('TESTDROID_TESTRUN') or 'My testrun'
        new_command_timeout = os.environ.get('TESTDROID_CMD_TIMEOUT') or '60'
        testdroid_test_timeout = os.environ.get(
            'TESTDROID_TEST_TIMEOUT') or '600'

        log("Will save screenshots at: " + self.screenshot_dir)
        self.screenshot_count = 1

        # Options to select device
        # 1) Set environment variable TESTDROID_DEVICE
        # 2) Set device name to this python script
        # 3) Do not set #1 and #2 and let DeviceFinder to find free device for you
        deviceFinder = None
        testdroid_device = os.environ.get('TESTDROID_DEVICE') or ""

        deviceFinder = DeviceFinder(url=testdroid_url)
        if testdroid_device == "":
            # Loop will not exit until free device is found
            while testdroid_device == "":
                testdroid_device = deviceFinder.available_free_android_device()

        apiLevel = deviceFinder.device_API_level(testdroid_device)
        print "Starting Appium test using device '%s'" % testdroid_device

        desired_capabilities_cloud = {}
        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        if apiLevel > 16:
            desired_capabilities_cloud['testdroid_target'] = 'android'
        else:
            desired_capabilities_cloud['testdroid_target'] = 'selendroid'

        desired_capabilities_cloud['testdroid_apiKey'] = testdroid_apiKey
        desired_capabilities_cloud['testdroid_project'] = testdroid_project
        desired_capabilities_cloud['testdroid_testrun'] = testdroid_testrun
        desired_capabilities_cloud['testdroid_device'] = testdroid_device
        desired_capabilities_cloud['testdroid_app'] = testdroid_app
        desired_capabilities_cloud['platformName'] = 'Android'
        desired_capabilities_cloud['deviceName'] = 'Android Phone'
        desired_capabilities_cloud['automationName'] = 'selendroid'
        desired_capabilities_cloud['newCommandTimeout'] = new_command_timeout
        desired_capabilities_cloud[
            'testdroid_testTimeout'] = testdroid_test_timeout

        # set up webdriver
        log("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins"
            )
        self.driver = webdriver.Remote(appium_url, desired_capabilities_cloud)
        log("WebDriver response received")
	def initDeviceFinder(self):
		self.device_finder = DeviceFinder()
		self.device_finder.foundDevice[str, SerialInterface].connect(self.gotNewDevice)
		self.device_finder.start()
class MainWindow(QtGui.QMainWindow):

	def __init__(self):
		QtGui.QMainWindow.__init__(self, None)
		uic.loadUi('mainwindow.ui', self)
		self.resize(700, 500)

		self.plotWindow = PlotWindow()
		self.stackedPlots.addWidget(self.plotWindow)
		self.stackedPlots.setCurrentIndex(0)

		self.actionRefresh.triggered[bool].connect(self.refreshList)
		self.actionConnect.triggered[bool].connect(self.connectFromList)
		self.actionDisconnect.triggered[bool].connect(self.disconnectFromCurrentDevice)
		self.actionLock.toggled[bool].connect(self.hold)
		self.actionViewAll.toggled[bool].connect(self.autoSet)
		self.actionExport.triggered[bool].connect(self.exportData)
		self.actionQuit.triggered[bool].connect(self.quitApp)
		self.actionAbout.triggered[bool].connect(self.aboutApp)

		self.listDevices.itemSelectionChanged.connect(self.deviceListChanged)

		self.actionViewAll.setChecked(True)
		self.autoSet(self.actionViewAll.isChecked())

		self.ifaces = []
		self.port = None
		self.baud = 115200
		self.iface = None
		self.iface_thread = None

		self.initDeviceFinder()
		self.disableControls()

		self.deviceListChanged()


		self.statusBar().showMessage('Ready.')
		
	def deviceListChanged(self):
		if self.listDevices.count() > 0:
			self.actionConnect.setEnabled(True)
			self.enableControls()
		else:
			self.actionConnect.setEnabled(False)
			self.disableControls()

	def disableControls(self):
		self.plotWindow.setEnabled(False)
		self.actionDisconnect.setEnabled(False)
		self.actionLock.setEnabled(False)
		self.actionViewAll.setEnabled(False)
		self.actionExport.setEnabled(False)

	def enableControls(self):
		self.plotWindow.setEnabled(True)
		self.actionDisconnect.setEnabled(True)
		self.actionLock.setEnabled(True)
		self.actionViewAll.setEnabled(True)
		self.actionExport.setEnabled(True)

	def initDeviceFinder(self):
		self.device_finder = DeviceFinder()
		self.device_finder.foundDevice[str, SerialInterface].connect(self.gotNewDevice)
		self.device_finder.start()

	def gotNewDevice(self, port, iface):
		self.port = port
		self.listDevices.addItem(QtGui.QListWidgetItem(QtGui.QIcon('icons/device.png'), port))
		self.ifaces.append(iface)

		self.statusBar().showMessage('Found %d device(s).' % self.listDevices.count())

	def startSampling(self):
		self.iface_thread.start()

	def stopSampling(self):
		self.iface_thread.stop__()
		self.iface_thread.exit()

	def connectDevice(self):
		if not self.iface:
			self.iface = self.ifaces[self.listDevices.currentRow()]

		if self.iface:
			if not self.iface.isConnected():
				self.iface = SerialInterface(self.port, self.baud)
				self.iface.connectToArduino()

			if not self.iface.serial_conn.isOpen():
				self.iface.serial_conn.open()
				
			if self.iface.isConnected():
				if self.iface_thread:
					del self.iface_thread
			
				self.iface_thread = SerialThread(self.iface)
				self.iface_thread.n_samples = 1000
				self.iface_thread.gotSamples[tuple, int].connect(self.plotWindow.plotSamples)
				#self.iface_thread.deviceDisconnected.connect(self.disconnectFromCurrentDevice)

				self.startSampling()

				return True

		return False

	def refreshList(self):
		self.statusBar().showMessage('Searching...')

		for i in range(0, self.listDevices.count()):
			port = self.listDevices.item(i).text()
			self.device_finder.found.remove(port)

		self.listDevices.clear()
		self.ifaces = []

	def connectFromList(self):
		self.actionConnect.setEnabled(False)
		self.actionDisconnect.setEnabled(True)
		self.actionRefresh.setEnabled(False)

		#self.connectDevice(self.listDevices.currentItem().text())
		if self.connectDevice():
			self.enableControls()
		else:
			QtGui.QMessageBox.critical(self, 'Error', 'Cannot connect to the device, refresh the list')

	def disconnectFromCurrentDevice(self):
		self.actionConnect.setEnabled(True)
		self.actionDisconnect.setEnabled(False)
		self.actionRefresh.setEnabled(True)
		self.disableControls()

		try:
			self.stopSampling()
			self.iface.disconnect()
		except:
			pass

		self.iface = None
		self.plotWindow.plot_item_a.clear()
		self.plotWindow.plot_item_p.clear()

	def exportData(self):
		self.plotWindow.scene().showExportDialog()

	def hold(self, checked):
		if checked:
			self.stopSampling()
		else:
			self.connectDevice()
			self.startSampling()

	def autoSet(self, checked):
		if checked:
			self.plotWindow.plot_item_a.enableAutoRange()
			self.plotWindow.plot_item_p.enableAutoRange()
		else:
			self.plotWindow.plot_item_a.disableAutoRange()
			self.plotWindow.plot_item_p.disableAutoRange()


	def quitApp(self):
		try:
			self.disconnectFromCurrentDevice()
		except:
			pass

		QtGui.QApplication.exit(0)

	def aboutApp(self):
		QtGui.QMessageBox.about(self, 'About',
							    """<b>Spectrum Analyzer</b><br>Computer Peripherals Interface Project<br><b>By:</b><br>Sherif Adel Radwan<br>Mahmoud Sayed Zainhom<br>Abdelrahman Ghanem Abdelrady""")
	
	def closeEvent(self, event):
		if self.iface:
			self.iface.disconnect()