環(huán)境介紹:Python 3.9.1
自行下載appium和相關(guān)依賴
本代碼是無(wú)聊寫的,運(yùn)行也正常,但是就是搶不到,搶票需要天時(shí),地利,人和,不要用UI最好
我鏈接的是夜神虛擬模擬器文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-519122.html
特此說(shuō)明:所有的UI自動(dòng)化搶票以個(gè)人見(jiàn)解,95%往上搶不到票文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-519122.html
import os
from appium import webdriver
import time
from selenium.webdriver.common.by import By
def get_size(driver):
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
return x, y
def swipe_down(driver, t):
"""
滑動(dòng)時(shí)X軸不變,Y軸由小到大
"""
screensize = get_size(driver)
x1 = int(screensize[0] * 0.5) # x坐標(biāo)
y1 = int(screensize[1] * 0.25) # 起始y坐標(biāo)
y2 = int(screensize[1] * 0.75) # 終點(diǎn)y坐標(biāo)
driver.swipe(x1, y1, x1, y2, t)
heard = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
desired_caps = {
"platformName": "Android",
"platformVersion": "7.1.3",
"appPackage": "cn.damai",
"appActivity": "cn.damai.search.v2.SearchActivity",
"noReset": True,
"adbExecTimeout": 200000,
"headers": heard
}
# name = "作者"
# concert_name = "【北京】DEADLINE 小鬼-作者2023巡回演唱會(huì)-北京站"
# session = '2023-06-03 周六 19:00'
# money = '看臺(tái)1580元'
name = "作者"
concert_name = "武漢站"
session = '2023-06-25 周日 19:00'
money = '看臺(tái)855'
try:
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) ##啟動(dòng)服務(wù)器地址,后面跟的是手機(jī)信息
driver.implicitly_wait(8)
print("開(kāi)始輸入……")
driver.find_element(By.ID, "cn.damai:id/header_search_v2_input").send_keys(name)
driver.find_element(By.XPATH, '//android.widget.TextView[@text="{}"]'.format(name)).click()
time.sleep(0.5)
#獲取演唱會(huì)場(chǎng)次
# try:
# print('點(diǎn)擊場(chǎng)次') # 但是時(shí)間點(diǎn)長(zhǎng)
# driver.find_element(By.XPATH, "http://*[@text='{}']".format(concert_name)).click()
# except:
# print('點(diǎn)擊場(chǎng)次')#需要手動(dòng)配置
# driver.tap([(186, 280), (864, 364)], 300)
# driver.tap([(186, 280), (864, 364)], 300)
time.sleep(1)
#獲取當(dāng)前是否能夠購(gòu)買,如果能夠購(gòu)買直接進(jìn)入
sell_status = driver.find_element(By.ID, "cn.damai:id/tv_left_main_text").text
while True:
print('現(xiàn)在售票狀態(tài)處于:{}中....'.format(sell_status))
if sell_status.strip() == '立即預(yù)定' or sell_status.strip() == '立即購(gòu)買':
driver.find_element(By.ID, "cn.damai:id/tv_left_main_text").click()
break
else:
# 點(diǎn)擊立即購(gòu)買
swipe_down(driver, 200)
# time.sleep(0.1)
sell_status = driver.find_element(By.ID, "cn.damai:id/tv_left_main_text").text
time.sleep(0.5)
#選擇場(chǎng)次
try:
while True:
driver.find_element(By.XPATH, "http://android.widget.TextView[@text='{}']".format(session)).click()
time.sleep(0.1)
driver.find_element(By.XPATH, "http://android.widget.TextView[@text='{}']".format(money)).click()
#點(diǎn)擊立即確定
driver.tap([(354, 1496), (546, 1584)], 300)
time.sleep(0.1)
try:
driver.find_element(By.ID,"cn.damai:id/damai_theme_dialog_confirm_btn")
driver.find_element(By.ID, "cn.damai:id/damai_theme_dialog_confirm_btn").click()
time.sleep(0.5)
except:
break
#處理票價(jià)
# num = 1
# while num > 1:
# driver.find_element(By.ID, "cn.damai:id/img_jia").click()
# num -= 1
# driver.tap([(450, 1496), (858, 1584)], 300)
# driver.find_element(By.XPATH, '//android.widget.TextView[@text="馬茂財(cái)"]').click()
# try:
# driver.find_element(By.XPATH,'//android.widget.TextView[@text="支付寶"]').click()
# except:
# pass
#點(diǎn)擊確定
driver.tap([(658, 1500), (858, 1580)], 300)
except:
driver.find_element(By.ID, "cn.damai:id/damai_theme_dialog_cancel_btn']").click()
driver.tap([(354, 1496), (546, 1584)], 300)
time.sleep(0.5)
# try:
# driver.find_element(By.XPATH, '//android.widget.TextView[@text="預(yù)留身份證信息"]')
# except:
#處理票價(jià)
# num = 1
# while num > 1:
# driver.find_element(By.ID, "cn.damai:id/img_jia").click()
# num -= 1
driver.tap([(450, 1496), (858, 1584)], 300)
# driver.find_element(By.XPATH, '//android.widget.TextView[@text="預(yù)留身份證信息"]').click()
# try:
# driver.find_element(By.XPATH,'//android.widget.TextView[@text="支付寶"]').click()
# except:
# pass
#點(diǎn)擊確定
driver.tap([(658, 1500), (858, 1580)], 300)
except Exception as e:
raise Exception(e)
finally:
os.system("adb uninstall io.appium.settings")
# os.system("adb uninstall io.appium.unlock")
# driver.quit()
到了這里,關(guān)于大麥搶票-Appium實(shí)現(xiàn)搶票軟件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!