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
    评论
你想要了解关于使用Appium开发抢票脚本的相关信息吗?我可以帮助你解答一些基本问题。请注意,抢票脚本的开发和使用可能涉及到法律和道德问题,所以请确保你使用脚本的方式是合法和合理的。 首先,你需要安装Appium并配置好相关的环境。Appium是一款用于移动应用自动化测试的工具,也可以用来开发抢票脚本。你可以访问Appium官方网站(https://appium.io/)下载最新版本的Appium,并按照官方文档进行安装和配置。 接下来,你需要了解你所要抢票的应用的界面结构和交互逻辑。你可以使用Appium提供的UIAutomatorViewer或者类似的工具来获取应用界面的元素信息,例如按钮、输入框等等。通过这些元素信息,你可以编写脚本来模拟用户操作,实现自动化抢票。 在编写抢票脚本时,你需要考虑以下几点: 1. 获取应用界面元素:使用Appium提供的API来定位和操作应用界面元素。 2. 模拟用户操作:例如点击按钮、输入文本等等,以完成登录、选择车次、提交订单等流程。 3. 处理异常情况:例如网络异常、应用崩溃等,你需要编写代码来处理这些异常情况并做出相应的处理。 最后,你可以将你的抢票脚本与定时任务结合起来,实现定时自动抢票的功能。 当然,抢票脚本的开发是一个相对复杂的过程,需要具备一定的编程和调试经验。希望这些信息对你有所帮助!如果你有更具体的问题,可以继续向我提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值