ver 2020-10-20 for kktix auto press next button at /events/ page.

master
CHUN YU YAO 2020-10-21 00:31:30 +08:00
parent fa5826a109
commit 6e2a31eadb
2 changed files with 66 additions and 6 deletions

View File

@ -44,7 +44,7 @@ warnings.simplefilter('ignore',InsecureRequestWarning)
#附註1沒有寫的很好很多地方應該可以模組化。 #附註1沒有寫的很好很多地方應該可以模組化。
#附註2 #附註2
CONST_APP_VERSION = u"MaxBot (2020.07.26)" CONST_APP_VERSION = u"MaxBot (2020.10.20)"
CONST_FROM_TOP_TO_BOTTOM = u"from top to bottom" CONST_FROM_TOP_TO_BOTTOM = u"from top to bottom"
CONST_FROM_BOTTOM_TO_TOP = u"from bottom to top" CONST_FROM_BOTTOM_TO_TOP = u"from bottom to top"
@ -1213,6 +1213,46 @@ def tixcraft_ticket_main(url, is_verifyCode_editing):
return is_verifyCode_editing return is_verifyCode_editing
# PS: There are two "Next" button in kktix.
# : 1: /events/xxx
# : 2: /events/xxx/registrations/new
# : This is for case-1.
def kktix_events_press_next_button():
ret = False
# let javascript to enable button.
time.sleep(0.2)
try:
# method #3 wait
wait = WebDriverWait(driver, 1)
next_step_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.tickets a.btn-point')))
if not next_step_button is None:
if next_step_button.is_enabled():
next_step_button.click()
ret = True
except Exception as exc:
print("wait form-actions div wait to be clickable Exception:")
print(exc)
pass
# retry once
# method #1
try:
# method #3 wait
wait = WebDriverWait(driver, 1)
next_step_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.tickets a.btn-point')))
if not next_step_button is None:
if next_step_button.is_enabled():
next_step_button.click()
ret = True
except Exception as exc:
print("wait form-actions div retry clickable Exception:")
print(exc)
return ret
# : This is for case-2 next button.
def kktix_press_next_button(): def kktix_press_next_button():
ret = False ret = False
@ -1513,12 +1553,20 @@ def kktix_check_agree_checkbox():
return is_need_refresh, is_finish_checkbox_click return is_need_refresh, is_finish_checkbox_click
def kktix_check_register_status(url): def kktix_check_register_status(url):
prefix = 'com/events/' #ex: https://xxx.kktix.cc/events/xxx
prefix_list = ['.com/events/','.cc/events/']
postfix = '/registrations/new' postfix = '/registrations/new'
is_match_event_code = False
event_code = ""
for prefix in prefix_list:
event_code = find_between(url,prefix,postfix) event_code = find_between(url,prefix,postfix)
#print('event_code:',event_code)
html_result = None
if len(event_code) > 0: if len(event_code) > 0:
is_match_event_code = True
#print('event_code:',event_code)
html_result = None
if is_match_event_code:
url = 'https://kktix.com/g/events/%s/register_info' % event_code url = 'https://kktix.com/g/events/%s/register_info' % event_code
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36' user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
@ -3242,6 +3290,18 @@ def main():
if '/registrations/new' in url: if '/registrations/new' in url:
answer_index, kktix_register_status_last = kktix_reg_new(url, answer_index, kktix_register_status_last) answer_index, kktix_register_status_last = kktix_reg_new(url, answer_index, kktix_register_status_last)
else: else:
is_event_page = False
if '/events/' in url:
# ex: https://xxx.kktix.cc/events/xxx-copy-1
if len(url.split('/'))<=5:
is_event_page = True
if is_event_page:
if auto_press_next_step_button:
# pass switch check.
#print("should press next here.")
kktix_events_press_next_button()
answer_index = -1 answer_index = -1
kktix_register_status_last = None kktix_register_status_last = None

View File

@ -16,7 +16,7 @@ import os
import sys import sys
import json import json
CONST_APP_VERSION = u"MaxBot (2020.07.26)" CONST_APP_VERSION = u"MaxBot (2020.10.20)"
CONST_FROM_TOP_TO_BOTTOM = u"from top to bottom" CONST_FROM_TOP_TO_BOTTOM = u"from top to bottom"
CONST_FROM_BOTTOM_TO_TOP = u"from bottom to top" CONST_FROM_BOTTOM_TO_TOP = u"from bottom to top"