概述
问题:
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)
最后
以上就是凶狠鸵鸟为你收集整理的appium 03-登录脚本demo 2022学习记录的全部内容,希望文章能够帮你解决appium 03-登录脚本demo 2022学习记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复