import time
from datetime import datetime, timedeltafrom appium import webdriver
from selenium.webdriver.common.by import By
#from appium.webdriver.extensions.android.nativekey import AndroidKey"""优化部分"""
'''
需要预留弹窗line61
*******************************appium响应过慢,需要提前启动appium***************************************
'''
"""优化部分"""'''设置部分'''
#初始化个人信息
pre_tickets_name="蔡徐坤"
audience_count=1
#填写时间为24小时制
main_hour =20
main_minute =38
'''设置部分'''desired_caps = {'platformName': 'Android', # 被测手机是安卓'platformVersion': '12', # 手机安卓版本'deviceName': 'xxx', # 设备名,安卓手机可以随意填写'appPackage': 'cn.damai', # 启动APP Package名称'appActivity': '.launcher.splash.SplashMainActivity', # 启动Activity名称'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True'resetKeyboard': True, # 执行完程序恢复原来输入法'noReset': True,       # 不要重置App'newCommandTimeout': 6000,'automationName' : 'UiAutomator2'# 'app': r'd:\apk\bili.apk',
}#连接appium sever,初始化自动环境
#Remote就是driver类的对象def start_get_ticket():driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)#设置缺省时间#测试过程出现弹窗,需要修改,或者半人工,需要将隐式等待增长driver.implicitly_wait(9)###开始自动化测试print("5s后开始自动化测试")time.sleep(5)driver.find_element(By.XPATH,'/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]').click()search_box=driver.find_element(By.XPATH,'/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.EditText')search_box.send_keys(pre_tickets_name)driver.find_element(By.XPATH,'/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ViewFlipper/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/android.widget.RelativeLayout[1]/android.widget.TextView[2]').click()driver.find_element(By.XPATH,'/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ViewFlipper/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.FrameLayout[1]/android.widget.LinearLayout').click()###需要预留一个弹窗位置###暂时认为需要半人工处理信息print("前置查找元素任务已经完成,接下来完成自动抢票任务")print("查找元素的任务已经完成,请接下来完成半人工任务:修改预售票的参数,时常20秒")time.sleep(20)print("即将开始抢票,正在等待售票时间的到来")# 获取当前时间并转换为北京时间utc_now = datetime.utcnow()beijing_now = utc_now + timedelta(hours=8)# 设置任务开始时间task_time = beijing_now.replace(hour=main_hour, minute=main_minute, second=0, microsecond=0)# 计算距离任务开始时间的时间差delta_time = task_time - beijing_nowwait_seconds = delta_time.total_seconds()# 等待一定时间后执行任务time.sleep(wait_seconds)# 即将开始执行抢票任务的代码driver.implicitly_wait(2)"""立即购买"""driver.find_element(By.XPATH,"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.LinearLayout").click()"""确定"""driver.implicitly_wait(4)driver.find_element(By.XPATH,"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.TextView").click()"""选择观众,1位或者2位"""if (audience_count == 1):driver.implicitly_wait(2)driver.find_element(By.XPATH,"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[1]/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[1]/android.widget.CheckBox").click()if (audience_count == 2):driver.implicitly_wait(2)driver.find_element(By.XPATH,"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[1]/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[1]/android.widget.CheckBox").click()driver.find_element(By.XPATH,"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[1]/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[2]/android.widget.CheckBox").click()"""提交订单"""driver.implicitly_wait(2)driver.find_element(By.XPATH,"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout[2]/android.widget.FrameLayout/android.widget.LinearLayout[2]/android.widget.TextView[3]").click()return 1if __name__=='__main__':if(start_get_ticket()):print("所有任务都完成")"""
logs
finish in 2023/6/21/16:04
"""

使用appium不是一个很好的选择,而且也不一定能抢到票,由于没有学习逆向工程,所以这个只能使用这个框架,这个框架在界面中有轮播,播放的情况下,定位元素会十分慢,但是我周围的人确实能够手工抢到票,做这个的意义就是省去人工操作,最后提升下我的技能。

appium移动端python大麦网抢票相关推荐

  1. 【大麦网抢票】演唱会门票还能这样抢?看这里!我用Python实现了大麦网原价秒杀门票功能

    相信想去周董演唱会的大家都用过大麦网抢票吧? 可是-抢不到啊!!! 该说不说 我抢到了 那么,今天带大家用Python来制作一个自动抢票的脚本小程序! 知识点: 面向对象编程 selenium 操作浏 ...

  2. 大麦网抢票JavaScript代码,快速锁定你想要的时间和价格

    大麦网抢票JavaScript代码,快速锁定你想要的时间和价格 ___如何指定的某个按钮发送click事件? $('#priceList > div > ul > li:nth-ch ...

  3. 最新大麦网抢票脚本-Python实战

    学习时候的一个小例子,python挺有趣的,希望技术可以更进步 我也不多说啥了直接上图 系统:win10 python 版本:3.8.10 需要安装的库:selenium 安装方法: pip inst ...

  4. 【Python脚本】Python自动大麦网抢票,准点原价秒杀演唱会门票,拒绝黄牛交易!从我做起!!!1

    文章目录 前言 一.分析购票过程 二.Selenium 模拟浏览器操作 三.逆向工程:抢票接口 总结 前言 你是否错过了周杰伦的票,最近又没抢到五月天的票,不要太难过,今晚有张学友的票,后天还有张杰的 ...

  5. 【python实战】拒绝黄牛!我要用python原价冲周董演唱会~Python自动秒杀抢票脚本

    前言 大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会. 话剧.音乐剧.体育赛事等领域. 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 那么,今天带大家用Python ...

  6. python模拟app抢票_亲测,手把手教你用Python抢票

    大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+转载",申请过授权的不必再次申请,只要按约定转载即可,但文末需放置大数据文摘二维码. 大 ...

  7. Python操作12306抢票脚本

    有一段时间没有使用Python了,前几天经朋友提起一篇关于用Python实现抢火车票的文章,百度了实现抢火车票的技术细节,网上却有不少资料,也不是新鲜的东西.在了解了一些技术手段,阅读了一些大神的博文 ...

  8. 春运火车票今日开售, python让你抢票快人一步

    转发是对小编的最大支持 本文转自网络 2017年时间飞逝,转眼间距离2018年春节还有不到两个月的时间,离家在外的人们也已将购买回家车票的事宜提上日程.近日,中国交通报发布<2018年春运大数据 ...

  9. Python + Splinter 12306抢票

    临近春节和期末放假,很多小伙伴也开始关注起来了12306的放票与抢票,学习python之余,敲一个小的demo,如果能帮到人成功抢到票,那便是最好不过的了.这个小的脚本完成过程中,做了很多的调试,力求 ...

最新文章

  1. 求任意数阶乘最后一位
  2. 进程调度算法Java代码
  3. 让PIP源使用国内镜像
  4. 性能测试常用的软件有哪些,常用的正经CPU测试软件有哪些
  5. spring 事务隔离级别和传播行为_Spring事务的传播行为案例分析
  6. c++中outtextxy_第12章 坚持一百秒(《C和C++游戏趣味编程》配套教学视频)
  7. php如何生成唯一随机数,PHP实现生成唯一会员卡号(不重复的随机数)
  8. 预告|CVPR 2021 论文分享会日程公布!与计算机视觉领域学者一起收获“立体”参会体验...
  9. 搭建Pxe服务器无人听应答全自动网络安装VMWare esxi 6.0系统
  10. 如何运行vue项目 ?(详解,建议收藏) ❤️
  11. MapReduce Design Patterns(6 、Job 链)(十二)
  12. Codeforces_Round527_Div3_C题--Prefixes and Suffixes
  13. app支付宝接入流程图_Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)...
  14. python安装目录插件
  15. python批量ppt转图片,pdf转图片,word转图片脚本
  16. CISP证书专栏 — CISP-IRE证书
  17. [附源码]java毕业设计哈金院食堂美食评价系统
  18. vivado时序违例相关
  19. iOS - AliPay 支付宝支付
  20. Sanic框架下部署Pytorch模型

热门文章

  1. nodejs入门教程之CommonJs学习(二)
  2. 计算机毕业论文内容参考|基于Android的旅游攻略APP的设计与实现
  3. php绘制空心圆,HTML_html5使用canvas画空心圆与实心圆,这里给大家分享的是一个学习c - phpStudy...
  4. centos7部署smokeping,简单的yum直接安装
  5. 当你想要成为一名IC设计工程师时,不妨先看看这篇文章
  6. Pin和Pad区别 芯片设计 集成电路
  7. 移动通信网络规划:环境保护要求
  8. 系统管理Lesson 07. Managing Database Storage Structures
  9. 原来ReLU这么好用?一文带你深度了解ReLU激活函数
  10. Linux学习笔记14 ——execl