Ejemplo n.º 1
0
 def driver(self, which='Nexar') -> Remote:
     if 'chrome' in which:
         return webdriver.Chrome(executable_path=self.binary_path())
     elif 'Appium_Chrome' in which:
         return Remote(command_executor='http://0.0.0.0:4723/wd/hub',
                       desired_capabilities=self.
                       chrome_appium_desired_capadibilties())
     elif 'Nexar' in which:
         return Remote(
             command_executor='http://0.0.0.0:4723/wd/hub',
             desired_capabilities=self.nexar_appium_desired_capadibilties())
     else:
         raise ValueError()
Ejemplo n.º 2
0
    def create(device_name: str):
        """
        Initializes appium driver
        :type device_name: name of the device to be used, if it is none, it uses adb command to fetch it
        """
        try:
            if device_name is None:
                adb_ouput = check_output(["adb", "devices"]).decode('utf-8')
                device_name = re.search(r'^(.+)\tdevice',
                                        adb_ouput,
                                        flags=re.MULTILINE).group(1)

            desired_caps = {
                'platformName': 'Android',
                'deviceName': device_name,
                'appPackage': 'com.whatsapp',
                'appActivity': 'com.whatsapp.HomeActivity',
                'noReset': 'true'
            }
            app_driver = AppDriver()
            app_driver.driver = Remote('http://localhost:4723/wd/hub',
                                       desired_caps)
            return app_driver
        except Exception:
            return None
Ejemplo n.º 3
0
 def __init__(self):
     super(Client, self).__init__()
     self.config = Config()
     self.desired_caps = {
         'platformName':
         self.config.get_config('DESIRED_CAPS', 'platformName'),
         'platformVersion':
         self.config.get_config('DESIRED_CAPS', 'platformVersion'),
         'deviceName':
         self.config.get_config('DESIRED_CAPS', 'deviceName'),
         'appPackage':
         self.config.get_config('DESIRED_CAPS', 'appPackage'),
         'appActivity':
         self.config.get_config('DESIRED_CAPS', 'appActivity'),
         # 'udid': '127.0.0.1:4723',
         'unicodeKeyboard':
         True,
         'resetKeyboard':
         True,
         'autoGrantPermissions':
         True,
         'automationName':
         'uiautomator2',
         'app':
         PATH("packages/apps-release.apk")
     }
     self.driver_url = self.config.get_config('APP_DATABASE', 'driver_url')
     # self.driver = Remote("http://127.0.0.1:4723/wd/hub", self.desired_caps)
     self.driver = Remote('{}'.format(self.driver_url), self.desired_caps)
     self.driver.implicitly_wait(15)
     self.wait = WebDriverWait
Ejemplo n.º 4
0
def Login_Fixture():
    # 获取我的页面
    driver = Remote(Config.get("xf_remote", "command_executor"),
                    eval(Config.get("xf_remote", "desired_capabilities")))
    my_page = MyPage(driver, RESULT_XF_LOGS_DIR,
                     RESULT_XF_ERROR_SCREENSHOT_DIR)
    yield my_page
    driver.quit()
Ejemplo n.º 5
0
 def driver(port: int, capabilities: dict):
     try:
         return Remote(
             command_executor="http://localhost:{0}/wd/hub".format(
                 str(port)),
             desired_capabilities=capabilities)
     except URLError as e:
         exit(e)
Ejemplo n.º 6
0
def init_pwd():
    driver = Remote(desired_capabilities=devices_info.caps)
    driver.implicitly_wait(30)
    # 初始化登录页面
    login = Login(driver)
    home = Home(driver)
    pwd = Pwd(driver)
    yield driver, login, home, pwd
    driver.quit()
Ejemplo n.º 7
0
 def __init__(self):
     self.LOGGER = logging.getLogger(self.__class__.__name__)
     if not self.driver_share.get('driver'):
         self.driver = Remote(
             self.command_executor,
             desired_capabilities=self.desired_capabilities)
         self.driver_share['driver'] = self.driver
     else:
         self.driver = self.driver_share['driver']  # type: Remote
Ejemplo n.º 8
0
    def create() -> Optional['AppDriver']:
        """
        Initializes appium driver
        :type device_name: name of the device to be used, if it is none, it uses adb command to fetch it
        """
        try:
            run_server = not ("no_server" in g.kwargs and g.kwargs["no_server"])

            if "port" in g.kwargs and g.kwargs["port"] is not None:
                port = g.kwargs["port"]
            elif run_server:
                port = str(helper.get_free_tcp_port())
            else:
                port = "4723"

            g.logger.info("Finding android device")
            if "device_name" not in g.kwargs or g.kwargs["device_name"] is None:
                adb_path = os.path.join(os.environ.get('ANDROID_HOME'), 'platform-tools', "adb.exe")
                adb_ouput = subprocess.check_output([adb_path, "devices"]).decode('utf-8')
                device_name = re.search(r'^(.+)\tdevice', adb_ouput, flags=re.MULTILINE).group(1)

            if run_server:
                def appium_logging():
                    g.logger.info("launching appium server on {}".format(port))
                    try:
                        appium_process = subprocess.Popen(shlex.split("appium --port {}".format(port)), stdout=subprocess.PIPE, shell=True)
                        appium_logs = logging.getLogger('appium')
                        while g.system.status > -1:
                            line = appium_process.stdout.readline().decode('utf-8')
                            appium_logs.debug(line)
                        appium_process.stdout.close()
                        appium_process.kill()
                    except FileNotFoundError:
                        logging.error("Appium not installed")

                threading.Thread(target=appium_logging).start()

            g.logger.info("Connecting to appium with {}".format(device_name))
            desired_caps = {
                'platformName': 'Android',
                'deviceName': device_name,
                'appPackage': 'com.whatsapp',
                'appActivity': 'com.whatsapp.HomeActivity',
                'noReset': 'true'
            }
            driver = Remote('http://localhost:{}/wd/hub'.format(port), desired_caps)
            driver.implicitly_wait(5)
            g.logger.info("driver created")
            return AppDriver(driver)
        except FileNotFoundError:
            logging.error("Device not found; make sure device is connected using `adb devices` command")
Ejemplo n.º 9
0
def init_app(request):
    ' ' '初始化APP' ' '
    if request.param == 'Reset':
        # 重置APP
        caps['noReset'] = False
        driver = Remote(desired_capabilities=caps)
        login = Login(driver)
        home = Home(driver)
        sleep(3)
        # 进入首页
        home.homepage()
        sleep(1)
    else:
        # 不重置APP
        caps['noReset'] = True
        driver = Remote(desired_capabilities=caps)
        # 初始化登录页面
        login = Login(driver)
        sleep(3)
    # 点击注册/登录
    login.click_login()
    yield driver, login, caps
    driver.quit()
Ejemplo n.º 10
0
def access_web():

    desired_caps = {}
    # 平台类型
    desired_caps["platformName"] = "Android"
    # 平台版本号
    desired_caps["platformVersion"] = "7.0"
    # 设备名称
    desired_caps["deviceName"] = "8FS5T16614006423"
    # app包名
    # desired_caps["appPackage"]="com.lemon.lemonban"
    # 前程贷的包名com.xxzb.fenwoo
    desired_caps["appPackage"] = "com.xxzb.fenwoo"

    # app入口activity
    # desired_caps["appActivity"]="com.lemon.lemonban.activity.WelcomeActivity"
    desired_caps[
        "appActivity"] = "com.xxzb.fenwoo.activity.addition.WelcomeActivity"
    desired_caps["noReset"] = True
    driver = Remote(command_executor="http://127.0.0.1:4723/wd/hub",
                    desired_capabilities=desired_caps)

    time.sleep(2)
    # 滑屏操作
    # 先获取窗口的大小
    # size = driver.get_window_size()
    #
    # # 左滑先确定到size的宽90宽50
    # star_x = size["width"] * 0.9
    # star_y = size["height"] * 0.5
    #
    # end_x = size["width"] * 0.1
    # end_y = size["height"] * 0.5
    # # driver.swipe(star_x,star_y,end_x,end_y,duration=200)
    # for i in range(3):
    #     driver.swipe(star_x, star_y, end_x, end_y, duration=200)
    #     time.sleep(1)
    # time.sleep(4)
    # #立即体验
    # loc=(By.ID,"com.xxzb.fenwoo:id/btn_start")
    # print("kkkkkkkkk")
    # WebDriverWait(driver,10).until(ec.presence_of_element_located(loc)).click()
    # print("ssssssss")

    #注册/登录
    loc = (MobileBy.ID, "com.xxzb.fenwoo:id/btn_login")
    WebDriverWait(driver,
                  10).until(ec.visibility_of_element_located(loc)).click()

    yield driver
Ejemplo n.º 11
0
def init_app():
    caps = {
        "platformName": "Android",
        "platformVersion": "5.1",
        "deviceName": "Android Emulator",
        "automationName": "uiautomator2",
        "appActivity": "com.lemon.lemonban.activity.WelcomeActivity",
        "appPackage": "com.lemon.lemonban",
        "noReset": True
    }

    app_driver = Remote(desired_capabilities=caps)
    yield app_driver
    app_driver.quit()
Ejemplo n.º 12
0
def app_driver_qcd():
    caps = {
        "platformName": "Android",
        "platformVersion": "5.1",
        "deviceName": "Android Emulator",
        "appActivity": "com.xxzb.fenwoo.activity.addition.WelcomeActivity",
        "appPackage": "com.xxzb.fenwoo",
        "noReset": "False"
    }

    android_driver = Remote(desired_capabilities=caps)

    android_driver.implicitly_wait(10)

    return android_driver
Ejemplo n.º 13
0
def driver():
    """启动和结束appium 对象"""
    caps = {
        "platformName": "Android",
        "automationName": "Uiautomator2",  # 使用toast弹框必须要使用uiautomator2 才能定位
        "deviceName": "emulator-5554",
        "appPackage": "com.lemon.lemonban",
        "appActivity": "com.lemon.lemonban.activity.WelcomeActivity"
    }
    # 创建一个会话
    session = Remote(command_executor='http://127.0.0.1:4723/wd/hub',
                     desired_capabilities=caps)
    # 等待
    session.implicitly_wait(10)
    yield session
Ejemplo n.º 14
0
def init_app():
    caps = {
        "platformName": "Android",
        "deviceName": "Android Emulator",
        "automationName": "UiAutomator2",
        "appActivity": ".activity.MainActivity",
        "appPackage": "com.lemon.lemonban",
        "chromedriverExecutableDir": r"C:\chromdriver",
        "noReset": False,
    }

    driver = Remote(desired_capabilities=caps,
                    command_executor="http://127.0.0.1:4723/wd/hub")
    # 元素等待
    driver.implicitly_wait(20)
Ejemplo n.º 15
0
    def open_app(self, Version, name, Activity, Package, Reset):
        caps = {
            'platformName': 'Android',
            'platformVersion': Version,
            'deviceName': name,
            'appActivity': Activity,
            'appPackage': Package,
            # 'app':self.app,
            'moReset': Reset
        }

        self.driver = Remote(desired_capabilities=caps)
        sleep(10)
        self.driver.quit()
        return self.driver
Ejemplo n.º 16
0
def app_driver_nmb():
    caps = {
        "platformName": "Android",
        "platformVersion": "5.1",
        "deviceName": "Android Emulator",
        "automationName": "UIAutomator2",
        "appActivity": "com.lemon.lemonban.activity.WelcomeActivity",
        "appPackage": "com.lemon.lemonban",
        "noReset": "False"
    }

    android_driver = Remote(desired_capabilities=caps)

    android_driver.implicitly_wait(10)

    return android_driver
Ejemplo n.º 17
0
def init_settings():
    global drivers
    global capabilities
    global case_list
    global user_table
    global email_sign_table
    
    with codecs.open(__config_dir+'/logging.yaml','r',"utf-8") as config_open:
        logging_config = load(config_open)
        logging_config.setdefault("version",1)
        logging_config["handlers"]["file"]["filename"]=__log_dir+"\\"+logging_config["handlers"]["file"]["filename"]
        dictConfigClass(logging_config).configure()
    
    logger.debug("load config.yaml")
    with codecs.open(__config_dir + '/config.yaml','r','utf-8') as cfp:
        config = load(cfp)
        config.setdefault("version",1)
        capabilities = config["devices"]
        case_list = config["case_list"]
    
    logger.debug("load emailsigntable.csv file")
    csv.register_dialect('idialect',delimiter='|', quoting=csv.QUOTE_ALL)  
    with codecs.open(__config_dir + '/emailsigntable.csv', 'r', 'utf-8') as efp:
        ret = csv.reader(efp,dialect='idialect')
        email_sign_table = Queue()
        for i in ret:
            if not i[0].startswith("#"):
                email_sign_table.put(i)
#         email_sign_table = Iqueue([i for i in ret if not i[0].startswith("#")])
    
    logger.debug("load usertable.csv file")
    with codecs.open(__config_dir + '/usertable.csv', 'r', 'utf-8') as ufp:
        ret = csv.reader(ufp,dialect='idialect')
        user_table = Queue()
        for i in ret:
            if not i[0].startswith("#"):
                user_table.put(i)
#         user_table = Iqueue([i for i in ret if not i[0].startswith("#")])

    logger.debug("init drivers...")
    drivers = []
    for capabilitie in capabilities:
        driver = Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=capabilitie)
        driver.implicitly_wait(0.001)
        drivers.append(driver)
Ejemplo n.º 18
0
def init_app():
    """启动app fixture"""
    # caps = {
    #     "platformName": "Android",
    #     "deviceName": "Android Emulator",
    #     "automationName": "UiAutomator2",
    #     "appActivity": ".activity.MainActivity",
    #     "appPackage": "com.lemon.lemonban",
    #     "chromedriverExecutableDir" : r"C:\chrome_driver",
    #     "noReset": False,
    # }
    driver = Remote(desired_capabilities=caps,
                    command_executor='http://127.0.0.1:4723/wd/hub')
    driver.implicitly_wait(20)
    yield driver

    print("退出浏览器")
    driver.quit()
Ejemplo n.º 19
0
def setup_driver():
    capabilities = dict()
    capabilities['deviceName'] = 'nexus_6'
    capabilities['platformName'] = 'Android'
    capabilities['appiumVersion'] = '1.15.1'
    capabilities['platformVersion'] = '9.0'
    capabilities['newCommandTimeout'] = 600
    capabilities['automationName'] = 'UiAutomator2'
    capabilities['noReset'] = False
    capabilities['appPackage'] = 'com.truecaller'
    capabilities['appActivity'] = 'com.truecaller.ui.TruecallerInit'
    capabilities['appWaitActivity'] = 'com.truecaller.ui.*'
    driver = Remote('http://localhost:4723/wd/hub', capabilities)
    driver.reset()
    driver.start_activity(capabilities['appPackage'],
                          capabilities['appActivity'],
                          app_wait_activity=capabilities['appWaitActivity'])
    return driver
Ejemplo n.º 20
0
 def getDriver(self):
     desired_caps = {}
     desired_caps['platformName'] = 'Android'
     desired_caps['platformVersion'] = self.version
     desired_caps['deviceName'] = 'Android Emulator'
     # app的信息
     desired_caps['appPackage'] = self.packagename
     desired_caps['appActivity'] = self.activity
     desired_caps['udid']=self.udid
     desired_caps['noReset'] = True
     desired_caps['unicodeKeyboard']=True
     desired_caps['resetKeyboard']=True
     desired_caps['autoAcceptAlerts']=True
     try:
         driver=Remote(command_executor='http://127.0.0.1:4723/wd/hub', desired_capabilities=desired_caps)
         driver.get_window_size()
     except Exception as e:
         self.logger.error("appium remote driver启动失败,报错信息为: %s"%e)
         sys.exit()
     return driver
Ejemplo n.º 21
0
def init_bid():
    ' ' '不重置APP' ' '
    caps['noReset'] = False
    driver = Remote(desired_capabilities=caps)
    # 初始化登录页面
    login = Login(driver)
    home = Home(driver)
    bid = Bid(driver)
    sleep(3)
    # 进入首页
    home.homepage()
    # 点击注册/登录
    login.click_login()
    # 输入用户名
    login.login()
    # 输入密码
    login.get_password_input().send_keys('python')
    # 点击下一步
    login.click_next()
    login.click_talk_later()
    yield driver, login, bid
    driver.quit()
Ejemplo n.º 22
0
def start_driver(desired_caps, url, debug, port, udid, log_file):
    lock = threading.Lock()
    lock.acquire()
    logger.log("setting capabilities: " + desired_caps.__str__())
    logger.log("starting appium driver...")
    process = None
    if desired_caps['platformName'].lower().__contains__('android'):
        url, desired_caps, process, file = __local_run(url, desired_caps, port,
                                                       udid, log_file)
    else:
        url, desired_caps, file = __local_run_ios(url, desired_caps, port,
                                                  udid, log_file)
    err = None
    for x in range(2):
        try:
            driver = Remote(url, desired_caps)
            atexit.register(__quit_driver, driver, debug)
            logger.log(f"appium running on {url}. \n")
            lock.release()
            return driver, process, file
        except Exception as error:
            err = error
    lock.release()
    raise err
Ejemplo n.º 23
0
from appium.webdriver.common.multi_action import MultiAction
import time
from appium.webdriver import Remote
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.common.by import By

caps = {
    "platformName": "Android",
    "deviceName": "emulator-5554",
    "appPackage": "com.lemon.lemonban",
    "appActivity": "com.lemon.lemonban.activity.WelcomeActivity"
}
# 创建一个会话
driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',
                desired_capabilities=caps)
# 等待
driver.implicitly_wait(10)

# toast 弹框定位文本,方法一:通过 text文本定位 toast弹框
text = '用户名或者密码不正确'
driver.find_element(By.XPATH, f'//*[contains(@text,"{text}")]')

# 方法二: //Android.widget.Toast
el = driver.find_element(By.XPATH, '//android.widget.Toast')
# 断言 获取文本 el.text
Ejemplo n.º 24
0
from appium.webdriver import Remote
from appium.webdriver.common.mobileby import MobileBy
from appium.webdriver.common.touch_action import TouchAction
from common.app_operate import AppOperate

caps = {
    "platformName": "Android",
    "platformVersion": "5.1",
    "deviceName": "Android Emulator",
    "appActivity": "com.xxzb.fenwoo.activity.addition.WelcomeActivity",
    "appPackage": "com.xxzb.fenwoo",
    "noReset": "False"
}

android_driver = Remote(desired_capabilities=caps)

android_driver.implicitly_wait(10)

app_action = TouchAction(android_driver)
app_opre = AppOperate(android_driver)

#
# time.sleep(2)
# for i in range(4):
#     app_opre.swipe_left()
#     time.sleep(1)
#
# # 点击立即体检进入首页
# # android_driver.find_element_by_id("com.xxzb.fenwoo:id/btn_start").click()
#
Ejemplo n.º 25
0
 def create_mobile(appium_server, desired_caps):
     from appium.webdriver import Remote
     return CustomActions(Remote(appium_server, desired_caps), EventListener())
Ejemplo n.º 26
0
from selenium.webdriver import Chrome

caps = {
    "platformName": "Android",
    # automationName: 平台原生测试框架
    # "automationName": "UiAutomator1",
    # "platformVersion": "5.1",
    # "app": r"‪D:\data\柠檬班环境\app测试环境\环境\应用apk包\Future-release-2018.apk",
    "deviceName": "Android Emulator",
    "appActivity": "com.xxzb.fenwoo.activity.addition.WelcomeActivity",
    "appPackage": "com.xxzb.fenwoo",
    "noReset": "false",
}

# 增量开发(编程)
driver = Remote(desired_capabilities=caps,
                command_executor='http://127.0.0.1:4444/wd/hub')
driver.implicitly_wait(10)


class MobileKeys(object):
    ENTER = 66


class BasePage:
    def __init__(self, driver):
        self.driver = driver

    def width(self):
        """获取屏幕宽度"""
        return self.driver.get_window_size()['width']
Ejemplo n.º 27
0
 def _create_session(o):
     o.driver = Remote(command_executor="http://localhost:9999", desired_capabilities=o.desired_capabilities)
Ejemplo n.º 28
0
# -*- coding:utf-8 -*-
from appium.webdriver import Remote
# 获得机器屏幕大小x,y
driver=Remote()


# @property
def getsize():
    x = driver.get_window_size()['width']
    y = driver.get_window_size()['height']
    return (x, y)


# 屏幕向上滑动
def swipe_up(t):
    l = getsize()
    x1 = int(l[0] * 0.5)  # x坐标
    y1 = int(l[1] * 0.75)  # 起始y坐标
    y2 = int(l[1] * 0.25)  # 终点y坐标
    driver.swipe(x1, y1, x1, y2, t)


# 屏幕向下滑动
def swipe_down(t):
    l = getsize()
    x1 = int(l[0] * 0.5)  # x坐标
    y1 = int(l[1] * 0.25)  # 起始y坐标
    y2 = int(l[1] * 0.75)  # 终点y坐标
    driver.swipe(x1, y1, x1, y2, t)

import os

from appium.webdriver import Remote
from appium_flutter_finder.flutter_finder import FlutterElement, FlutterFinder

# Example

driver = Remote(
    'http://localhost:4723/wd/hub',
    dict(platformName='iOS',
         automationName='flutter',
         platformVersion='12.4',
         deviceName='iPhone 8',
         app='{}/../app/app/Runner.zip'.format(
             os.path.dirname(os.path.realpath(__file__)))))

finder = FlutterFinder()
text_finder = finder.by_text('You have pushed the button this many times:')
element = FlutterElement(driver, text_finder)
print(element.text)
Ejemplo n.º 30
0
def androidriver():
    # driver = Remote('http://0.0.0.0:4723/wd/hub', {"platformName": "Android", "platformVersion": "6.0", "appPackage": "cgtz.com.cgtz", "appActivity": ".ui.MainActivity", "deviceName": "deviceName"})
    driver = Remote('http://0.0.0.0:4723/wd/hub',
                    get_android_desired_capabilities('cgtz_V4.0.1_test.apk'))
    return driver