mirror of
https://github.com/appium/appium.git
synced 2026-01-13 13:50:00 -06:00
77 lines
2.9 KiB
Python
77 lines
2.9 KiB
Python
import os
|
|
import sys
|
|
from selenium.common.exceptions import InvalidSessionIdException
|
|
from datetime import datetime
|
|
from sauceclient import SauceClient
|
|
|
|
|
|
ANDROID_BASE_CAPS = {
|
|
'app': os.path.abspath('../apps/ApiDemos-debug.apk'),
|
|
'automationName': 'UIAutomator2',
|
|
'platformName': 'Android',
|
|
'platformVersion': os.getenv('ANDROID_PLATFORM_VERSION') or '8.0',
|
|
'deviceName': os.getenv('ANDROID_DEVICE_VERSION') or 'Android Emulator',
|
|
}
|
|
|
|
IOS_BASE_CAPS = {
|
|
'app': os.path.abspath('../apps/TestApp.app.zip'),
|
|
'automationName': 'xcuitest',
|
|
'platformName': 'iOS',
|
|
'platformVersion': os.getenv('IOS_PLATFORM_VERSION') or '12.2',
|
|
'deviceName': os.getenv('IOS_DEVICE_NAME') or 'iPhone 8 Simulator',
|
|
# 'showIOSLog': False,
|
|
}
|
|
|
|
if os.getenv('SAUCE_LABS') and os.getenv('SAUCE_USERNAME') and os.getenv('SAUCE_ACCESS_KEY'):
|
|
build_id = os.getenv('TRAVIS_BUILD_ID') or datetime.now().strftime('%B %d, %Y %H:%M:%S')
|
|
build_name = 'Python Sample Code %s' % build_id
|
|
|
|
ANDROID_BASE_CAPS['build'] = build_name
|
|
ANDROID_BASE_CAPS['tags'] = ['e2e', 'appium', 'sample-code', 'android', 'python']
|
|
ANDROID_BASE_CAPS['app'] = 'http://appium.github.io/appium/assets/ApiDemos-debug.apk'
|
|
|
|
IOS_BASE_CAPS['build'] = build_name
|
|
IOS_BASE_CAPS['tags'] = ['e2e', 'appium', 'sample-code', 'ios', 'python']
|
|
IOS_BASE_CAPS['app'] = 'http://appium.github.io/appium/assets/TestApp9.4.app.zip'
|
|
|
|
EXECUTOR = 'http://{}:{}@ondemand.saucelabs.com:80/wd/hub'.format(
|
|
os.getenv('SAUCE_USERNAME'), os.getenv('SAUCE_ACCESS_KEY'))
|
|
|
|
sauce = SauceClient(os.getenv('SAUCE_USERNAME'), os.getenv('SAUCE_ACCESS_KEY'))
|
|
else:
|
|
EXECUTOR = 'http://127.0.0.1:4723/wd/hub'
|
|
|
|
|
|
def ensure_dir(directory):
|
|
if not os.path.exists(directory):
|
|
os.makedirs(directory)
|
|
|
|
|
|
def take_screenshot_and_logcat(driver, device_logger, calling_request):
|
|
__save_log_type(driver, device_logger, calling_request, 'logcat')
|
|
|
|
|
|
def take_screenshot_and_syslog(driver, device_logger, calling_request):
|
|
__save_log_type(driver, device_logger, calling_request, 'syslog')
|
|
|
|
|
|
def __save_log_type(driver, device_logger, calling_request, type):
|
|
logcat_dir = device_logger.logcat_dir
|
|
screenshot_dir = device_logger.screenshot_dir
|
|
|
|
try:
|
|
driver.save_screenshot(os.path.join(screenshot_dir, calling_request + '.png'))
|
|
logcat_data = driver.get_log(type)
|
|
except InvalidSessionIdException:
|
|
logcat_data = ''
|
|
|
|
with open(os.path.join(logcat_dir, '{}_{}.log'.format(calling_request, type)), 'w') as logcat_file:
|
|
for data in logcat_data:
|
|
data_string = '%s: %s\n' % (data['timestamp'], data['message'].encode('utf-8'))
|
|
logcat_file.write(data_string)
|
|
|
|
def report_to_sauce(session_id):
|
|
print("Link to your job: https://saucelabs.com/jobs/%s" % session_id)
|
|
passed = str(sys.exc_info() == (None, None, None))
|
|
sauce.jobs.update_job(session_id, passed=passed)
|