appium 03-登录脚本demo 2022学习记录

问题:

1.问题1:报错元素定位不到

需要先等待脚本将app打开之后才能找到,可以适当使用sleep来等待一段时间

更好的方案:

通过使用

 `driver.implicitly_wait(8)`

来进行隐式等待(后续学习之后发现还有显示等待,之后文章会写),参数为8代表每个组件都被将搜索8秒,若8秒搜索不到则报错抛出异常

2.问题2:登录后权限弹窗无法定位

解决方案1:通过添加两个启动参数,使用户原有数据不清楚,即可

# 以下两项配置影响是否清除登录数据(权限赋予及登录状态等):
# desired_caps['noReset'] = True
# desired_caps['fullReset'] = False

解决方案2:通过自动处理权限弹窗的方法解决

def permission_choose_fun2(driver, number):
    # 权限弹框处理
    for i in range(number):
        loc = ("xpath", "//*[@text='允许']")
        try:
            e = WebDriverWait(driver, 1, 0.5).until(EC.presence_of_element_located(loc))
            e.click()
        except:
            pass

全部demo代码: 

import time

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

# For W3C actions
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.actions.pointer_input import PointerInput

# appium server的ip
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

server_ip = "http://127.0.0.1:4723/wd/hub"


desired_caps = {
    "platformName": "Android",
    "appium:platformVersion": "7.1.2",
    "appium:deviceName": "127.0.0.1:62001",     #测试不影响可以乱写
    "appium:appPackage": "com.yw.oa",
    "appium:appActivity": ".MainActivity",
                }

# 以下两项配置影响是否清除登录数据(权限赋予及登录状态等):
# desired_caps['noReset'] = True
# desired_caps['fullReset'] = False


driver = webdriver.Remote(server_ip, desired_caps)

time.sleep(5)

el1 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widwiup/android.view.ViewGroup/android.view.ViewGroup/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup[1]/android.widget.EditText")
el1.send_keys("************")


el2 = driver.find_element(by=AppiumBy.XPATH,value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.Fraet.Fraiewroup/android.view.ViewGroup[2]/android.widget.EditText")
el2.send_keys("*********************")

time.sleep(1)

el3 = driver.find_element(by=AppiumBy.XPATH,value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayouroup/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup[5]/android.view.ViewGroup")
el3.click()

# time.sleep(2)


def permission_choose_fun2(driver, number):
    # 权限弹框处理
    for i in range(number):
        loc = ("xpath", "//*[@text='允许']")
        try:
            e = WebDriverWait(driver, 1, 0.5).until(EC.presence_of_element_located(loc))
            e.click()
        except:
            pass


if __name__ == "__main__":
    permission_choose_fun2(driver, 7)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值