appium移动端python大麦网抢票

这篇具有很好参考价值的文章主要介绍了appium移动端python大麦网抢票。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import time
from datetime import datetime, timedelta


from 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_now
  wait_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 1



if __name__=='__main__':
  if(start_get_ticket()):
    print("所有任务都完成")





"""
logs
finish in 2023/6/21/16:04
"""

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

到了这里,关于appium移动端python大麦网抢票的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 大麦抢票脚本

    请注意,编写或使用抢票脚本可能违反相关网站的服务条款和法律法规。以下内容仅供学习和了解技术原理之用,不鼓励或支持任何违反规定的行为。 在Python中编写大麦网抢票脚本通常涉及以下几个步骤: ### 1. 分析网站结构 - 使用浏览器的开发者工具(如Chrome的Inspect功能)

    2024年04月12日
    浏览(40)
  • Python制作【大麦网】自动抢票程序

    大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 那么,今天带大家用Python来制作一个自动抢票的脚本小程序 面向对象编程 selenium 操作浏览器

    2024年02月04日
    浏览(46)
  • 基于Python和Selenium的大麦网自动抢票脚本

    自动化抢票的脚本,需通过Selenium库来实现自动化操作。(学习参考) 优化后的完整代码: 需要注意的: 我用了 with 语句保证浏览器实例在函数结束后正确关闭。 我用了几个 try-except 块处理在各个步骤可能出现的异常,它可以在异常的时候打印出错误的信息。 我把大部分代

    2024年02月11日
    浏览(43)
  • Python制作【大麦网】抢票程序,看演唱会再也不怕没票了

    大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 那么,今天带大家用Python来制作一个自动抢票的脚本小程序 面向对象编程 selenium 操作浏览器

    2024年02月05日
    浏览(58)
  • 大麦抢票脚本全自动化

    代码中首先进行改造,基于autojs实现安卓端自动抢购,简单来说就是在代码中填写好场次、票价、观影人等信息后,停留在抢购页面,出现立即抢购按︾便会执行自动化点击,直到处于待付款状态才停止。   可以自动检测最新版本图片滑块,并滑动。 更新不自动点抢票按钮

    2024年02月04日
    浏览(46)
  • 基于selenium的大麦网自动抢票脚本

    先配置webdriver   记录cookie,设置免密登录  购票页面下单   选择座位+选择场次,票档(因为检索是否需要选择座位要浪费点时间,所以直接写了两个方法,看着选)   不用选择座位,直接选择给场次票档和数量 提交订单   购票页面点击加票按钮  判断XPATH是否存在   页

    2024年02月14日
    浏览(46)
  • 第十二届“中关村青联杯”全国研究生数学建模竞赛-C题:移动通信中的无线信道“指纹”特征建模

    目录 摘 要: 一、问题引入 1.1 无线指纹 1.2 多径传播与时延扩展

    2024年01月22日
    浏览(56)
  • 移动应用测试(Python+Appium+雷电模拟器)

    一、node.js(v20.1.1) 二、Java(JDK17) 三、Android SDK(24.4.1版本) 四、Python(3.10) 五、PyCharm(2023.3.2) 六、Appium(1.21.0) 七、雷电模拟器(雷电9) 若不想单独去下载,想直接获取所有安装包,请访问百度网盘链接提取:https://pan.baidu.com/s/1LSzazfQ2PbdiMLfZ4WiWAQ?pwd=n4vi        在

    2024年03月16日
    浏览(72)
  • 2022 年第十二届 MathorCup 高校数学建模挑战赛D题思路(移动通信网络站址规划和区域聚类问题)

    目录 一、前言 二、问题背景 三、问题 四、解题思路 (1)针对问题1: (2)针对问题2: (3)针对问题3: 五、附上几个典型代码 (1)K-means算法 (2)遗传算法 (3)模拟退火算法         本文是对2022 年第十二届 MathorCup 高校数学建模挑战赛D题 移动通信网络站址规划

    2024年02月10日
    浏览(50)
  • 2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛(北京移动用户体验影响因素研究高级版代码(迁移学习+kmeas聚类强特征生成))

    赛道 B:北京移动用户体验影响因素研究 移动通信技术飞速发展,给人们带来了极大便利,人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设,网络覆盖越来越完善。各个移动运营商,越来越重视客户的网络使用体验,从而进一步提升网络服务质量。客

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包