zoukankan      html  css  js  c++  java
  • python+appium 查找某个元素find_element()并click()点击,正向判断与反判断的方法封装

    使用场景:

      在自动化测试过程中,难免会用到反判断,包括异常情况的处理,比如:find_element_by_name('测试') 判断“测试”是否存在,存在则点击,不存在则执行其他条件。先看底层方法,之后将举例说明被封装方法的具体使用。

    find_element(By.ID,value)
    find_element(By.NAME,value)
    find_element(By.TAG_NAME,value)
    find_element(By.CLASS_NAME,value)

    以上方法均可使用,具体可根据实际需要在我封装的find_Element中继续添加

    底层方法介绍:

    python安装目录site-packagesseleniumwebdriver emotewebdriver.py中查找def  find_element方法。如下:

    def find_element(self, by=By.ID, value=None):
            """
            'Private' method used by the find_element_by_* methods.
    
            :Usage:
                Use the corresponding find_element_by_* instead of this.
    
            :rtype: WebElement
            """
            if self.w3c:
                if by == By.ID:
                    by = By.CSS_SELECTOR
                    value = '[id="%s"]' % value
                elif by == By.TAG_NAME:
                    by = By.CSS_SELECTOR
                elif by == By.CLASS_NAME:
                    by = By.CSS_SELECTOR
                    value = ".%s" % value
                elif by == By.NAME:
                    by = By.CSS_SELECTOR
                    value = '[name="%s"]' % value
            return self.execute(Command.FIND_ELEMENT, {
                'using': by,
                'value': value})['value']

    方法的封装:

    def find_Element(self,type,value):
            '''
            method explain:查找某个元素
            parameter explain: 【type】 取值的类型包括:id
    ameclass_name...   【value】根据type的类型给值
            Usage:
                device.find_Element('name',"我的認證")
            '''
            logging.info("执行--------find_Element-------方法")
            try:
                if type == 'id':
                    try:
                        return self.driver.find_element(By.ID,value)      #查找ID元素,存在则直接返回
                    except Exception,e:                        #appium存在元素则直接返回,不存在则跑出异常,因此必须用异常来处理不存在元素的情况
                        logging.info("未找到%type--%value"%(type,value))
                        return False                        #查找ID元素,不存在则返回False
                elif type == 'name':
                    try:
                        return self.driver.find_element(By.NAME,value)
                    except Exception,e:
                        logging.info("未找到%type--%value"%(type,value))
                        return False
            except:
                logging.warn("此处已抛异常---------------find_Element")
                self.take_screenShot("find_Element")      
           '''
            take_screenShot()自己封装的截图方法,如果你没封装就可以删除掉此句话,或者看链接将此方法添加到你封装py文
            件中:http://www.cnblogs.com/syw20170419/p/8280017.html  
           '''
    assert
    'find_Element' def click(self): ''' method explain:查找某个元素 parameter explain: 【type】 取值的类型 【value】根据type的类型给值 Undertake method:device.find_Element(type,value) Usage: name_value == device.find_Element(type = 'name',value="我的認證") name_value.click() ''' self.find_Element(type,self.value).click()

    举例说明被封装方法的使用:

    测试步骤:打开短信,点击“新建”创建一条短信并发送

    具体的封装方法在测试中调用如下:
    def creat_Message(self): logging.info("start creat message") '''创建短信''' sleep(5) new = self.device.find_Element(type = 'name',value="新建") #调用封装的find_Element方法
         if new:                    #判断新建存在,则执行点击
           new.click() elif new == False:         #判断新建不存在,则打印log logging.error( '新建不存在')
        
  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/syw20170419/p/8352139.html
Copyright © 2011-2022 走看看