From d1d69d10ace1bba6d633d7667940f89665bdaa81 Mon Sep 17 00:00:00 2001 From: CHUN YU YAO Date: Sat, 5 Aug 2023 19:01:11 +0800 Subject: [PATCH] 2023-08-02, fix for ibon. --- chrome_tixcraft.py | 42 ++++++++++++++++++++++++++++++++---------- config_launcher.py | 2 +- settings.py | 2 +- text_server.py | 2 +- 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/chrome_tixcraft.py b/chrome_tixcraft.py index d504114..cef42d8 100644 --- a/chrome_tixcraft.py +++ b/chrome_tixcraft.py @@ -54,7 +54,7 @@ import webbrowser import argparse import chromedriver_autoinstaller -CONST_APP_VERSION = "MaxBot (2023.08.01)" +CONST_APP_VERSION = "MaxBot (2023.08.02)" CONST_MAXBOT_CONFIG_FILE = "settings.json" CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt" @@ -1452,6 +1452,30 @@ def get_answer_list_by_question(CONST_EXAMPLE_SYMBOL, CONST_INPUT_SYMBOL, captch return return_list +def force_press_button_iframe(driver, f, select_by, select_query, force_submit=True): + if not f: + # ensure we are on main content frame + try: + driver.switch_to.default_content() + except Exception as exc: + pass + else: + try: + driver.switch_to.frame(f) + except Exception as exc: + pass + + is_clicked = force_press_button(driver, select_by, select_query, force_submit) + + if f: + # switch back to main content, otherwise we will get StaleElementReferenceException + try: + driver.switch_to.default_content() + except Exception as exc: + pass + + return is_clicked + def force_press_button(driver, select_by, select_query, force_submit=True): ret = False next_step_button = None @@ -3126,7 +3150,8 @@ def tixcraft_ticket_main(driver, config_dict, ocr, Captcha_Browser, domain_name) is_ticket_number_assigned = False row_text = None try: - row_text = select_obj.first_selected_option.text + selected_option = select_obj.first_selected_option + row_text = selected_option.text except Exception as exc: pass if not row_text is None: @@ -5630,7 +5655,7 @@ def ibon_ticket_number_appear(driver, config_dict): form_select = driver.find_element(by_method, selector_string) except Exception as exc: if show_debug_message: - print("find ticket_number select fail") + print("find ticket_number select fail:") print(exc) pass @@ -5988,7 +6013,6 @@ def ibon_area_auto_select(driver, config_dict, area_keyword_item): is_price_assign_by_bot = False is_need_refresh = False - matched_blocks = None area_list = None try: @@ -6104,13 +6128,13 @@ def ibon_area_auto_select(driver, config_dict, area_keyword_item): if is_price_assign_by_bot: formated_area_list = None + matched_blocks = [] if formated_area_list is not None: area_list_count = len(formated_area_list) if show_debug_message: print("formated_area_list count:", area_list_count) if area_list_count > 0: - matched_blocks = [] if len(area_keyword_item) == 0: matched_blocks = formated_area_list else: @@ -6159,10 +6183,6 @@ def ibon_area_auto_select(driver, config_dict, area_keyword_item): if show_debug_message: print("after match keyword, found count:", len(matched_blocks)) - if len(matched_blocks) == 0: - matched_blocks = None - is_need_refresh = True - target_area = None if matched_blocks is not None: if len(matched_blocks) > 0: @@ -6259,6 +6279,9 @@ def ibon_performance(driver, config_dict): # empty keyword, match all. is_need_refresh, is_price_assign_by_bot = ibon_area_auto_select(driver, config_dict, area_keyword) + if show_debug_message: + print("is_need_refresh:", is_need_refresh) + if is_need_refresh: try: driver.refresh() @@ -6268,7 +6291,6 @@ def ibon_performance(driver, config_dict): if config_dict["advanced"]["auto_reload_random_delay"]: time.sleep(random.randint(0,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND)) - return is_price_assign_by_bot def ibon_purchase_button_press(driver): diff --git a/config_launcher.py b/config_launcher.py index 756b54c..0e38809 100644 --- a/config_launcher.py +++ b/config_launcher.py @@ -22,7 +22,7 @@ import base64 import threading import subprocess -CONST_APP_VERSION = "MaxBot (2023.08.01)" +CONST_APP_VERSION = "MaxBot (2023.08.02)" CONST_MAXBOT_LAUNCHER_FILE = "config_launcher.json" CONST_MAXBOT_CONFIG_FILE = "settings.json" diff --git a/settings.py b/settings.py index 2dbebad..452ec93 100644 --- a/settings.py +++ b/settings.py @@ -34,7 +34,7 @@ warnings.simplefilter('ignore',InsecureRequestWarning) import ssl ssl._create_default_https_context = ssl._create_unverified_context -CONST_APP_VERSION = "MaxBot (2023.08.01)" +CONST_APP_VERSION = "MaxBot (2023.08.02)" CONST_MAXBOT_CONFIG_FILE = "settings.json" CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt" diff --git a/text_server.py b/text_server.py index 3efd8a9..1fcda29 100644 --- a/text_server.py +++ b/text_server.py @@ -28,7 +28,7 @@ import asyncio import tornado from tornado.web import Application -CONST_APP_VERSION = "MaxBot (2023.08.01)" +CONST_APP_VERSION = "MaxBot (2023.08.02)" CONST_MAXBOT_QUESTION_FILE = "MAXBOT_QUESTION.txt"