appium自动化之元素属性是否存在的判断


#判断元素是否存在
(1)def is_element_exist(element,timeout=1):
count
= 0 while count < timeout: souce = driver.page_source if element in souce: return True else: count += 1 time.sleep(1) return False
(2)def isElement(identifyBy,c):
    '''
Determine whether elements exist
Usage:
isElement(By.XPATH,"//a")
'''
time.sleep(1)
flag=None
try:
if identifyBy == "id":
WebDriverWait(driver, timeout=10, poll_frequency=0.5).until(
lambda x: x.find_element_by_id(c),
message='id定位超时')
elif identifyBy == "xpath":
WebDriverWait(driver, timeout=10, poll_frequency=0.5).until(
lambda x: x.find_element_by_xpath(c),
message='xpath定位超时')
elif identifyBy == "class":
driver.find_element_by_class_name(c)
elif identifyBy == "link text":
driver.find_element_by_link_text(c)
elif identifyBy == "partial link text":
driver.find_element_by_partial_link_text(c)
elif identifyBy == "name":
driver.find_element_by_name(c)
elif identifyBy == "tag name":
driver.find_element_by_tag_name(c)
elif identifyBy == "css selector":
driver.find_element_by_css_selector(c)
flag = True
except NoSuchElementException as e:
flag = False
finally:
return flag

实战例子:

import time
from  appium import webdriver
from selenium.common.exceptions import NoSuchElementException

'''
mumu模拟器:抖音综合操作

'''
# 设备信息
desired_caps = {
    "platformName": "Android",
    "platformVersion": "6.0.1",
    "deviceName": "127.0.0.1:7555",
    "appPackage": "com.ss.android.ugc.aweme",
    "appActivity": "com.ss.android.ugc.aweme.splash.SplashActivity",
    "noReset": True,
    "unicodeKeyboard": True,
    "resetKeyboard": True
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# driver.implicitly_wait(10)
time.sleep(6)

#判断元素是否存在
def is_element_exist(element,timeout=1):
    count = 0
    while count < timeout:
        souce = driver.page_source
        if element in souce:
            return  True
        else:
            count += 1
            time.sleep(1)
    return False

# 搜索操作
def douyin_search():
    driver.tap([(752, 68)], 500)                                                            # 点击搜索按钮
    time.sleep(1)
    driver.find_element_by_id('com.ss.android.ugc.aweme:id/ai4').send_keys('东山桃花山农产品')
    time.sleep(4)
    driver.tap([(100, 162), (736, 198)], 500)  # 点击第一个搜索结果
    time.sleep(1)
    driver.swipe(100, 266, 100, 198, 1000)  # 去除综合排序干扰
    time.sleep(1)
    element = driver.find_elements_by_id('com.ss.android.ugc.aweme:id/efw')[0]
    user_name = element.__getattribute__("text")  # 用户名
    print(user_name)
    if user_name == '邳州亚森苗木':  # 如果用户与搜索结果匹配
        driver.find_element_by_id('com.ss.android.ugc.aweme:id/h_y').click()  # 取消搜索内容
        time.sleep(1)
        print("111111")
    else:  # 用户与搜索不匹配的话
        driver.swipe(100,300,100,200,1000)
        time.sleep(1)
        print("8888")
        elements = is_element_exist('com.ss.android.ugc.aweme:id/hkt')
        print(elements)
        if elements == True:    #西瓜视频标签元素存在
            xigua_horizontal_screen_swipe()
            print("22222222")
            is_user_element_exist()
        else:#西瓜标签不存在
            is_user_element_exist()
#判断用户元素是否存在
def is_user_element_exist():
    user_status = is_element_exist('com.ss.android.ugc.aweme:id/efw')
    print(user_status)
    while True:
        elements = is_element_exist('com.ss.android.ugc.aweme:id/hkt')
        print(elements)
        if elements == True:  # 西瓜视频标签元素存在
            xigua_horizontal_screen_swipe()
        else:
            if user_status == True:  # 判断用户id元素是否存在
                enter_user_homepage()
                break
            else:
                driver.swipe(100, 500, 100, 400, 1000)
                enter_user_homepage()
                break
#判断标签元素是否存在
def is_tag_element_exist():
    pass

#进入用户主页操作
def enter_user_homepage():
    for i in range(0,20):
        user_status = is_element_exist('com.ss.android.ugc.aweme:id/efw')
        if user_status == True:
            element = driver.find_elements_by_id('com.ss.android.ugc.aweme:id/efw')[0]
            user_name = element.__getattribute__("text")
            print(user_name)
            if user_name:  # 如果有用户
                element.click()  # 进入主页
                time.sleep(1)
                driver.find_element_by_id('com.ss.android.ugc.aweme:id/btt').click()  # 进入头像页
                time.sleep(1)
                print("33333")
                driver.tap([(100, 100)], 500)  # 退出头像页
                time.sleep(1)
                print("44444")
                driver.tap([(50, 82)], 500)  # 退出用户主页
                time.sleep(3)
                print("55555")
            driver.swipe(100, 1198, 100, 198, 1000)  # 滑动下一个用户
            time.sleep(1)
        else:
            driver.swipe(100,500,100,300,1000)
            time.sleep(1)

#去除与搜索结果相同的用户
def user_repeat():
    driver.find_element_by_id('com.ss.android.ugc.aweme:id/qi').click()  # 取消搜索内容
    time.sleep(1)
    douyin_search()

#西瓜视频滑动操作
def xigua_horizontal_screen_swipe():
    driver.swipe(100,700,100,198,1000)             #滑动跳过横屏西瓜视频
    time.sleep(2)
    print("66666")

if __name__ == '__main__':
    douyin_search()

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM