for urbtix new survey.
							parent
							
								
									de86dfcee0
								
							
						
					
					
						commit
						2594c29980
					
				|  | @ -6116,6 +6116,113 @@ def urbtix_performance_confirm_dialog_popup(driver): | |||
| 
 | ||||
|     return ret | ||||
| 
 | ||||
| def urbtix_auto_survey(driver, config_dict): | ||||
|     show_debug_message = True    # debug. | ||||
|     show_debug_message = False   # online | ||||
| 
 | ||||
|     if config_dict["advanced"]["verbose"]: | ||||
|         show_debug_message = True | ||||
| 
 | ||||
|     questions_div = None | ||||
|     try: | ||||
|         questions_div = driver.find_elements(By.CSS_SELECTOR, 'div.modal-content > div.content > div.questions > div.question-item') | ||||
|     except Exception as exc: | ||||
|         #print("find modal-dialog fail") | ||||
|         #print(exc) | ||||
|         pass | ||||
| 
 | ||||
|     is_radio_clicked = False | ||||
| 
 | ||||
|     if questions_div is not None: | ||||
|         quetions_count = len(questions_div) | ||||
|         if show_debug_message: | ||||
|             print("quetions_count:", quetions_count) | ||||
| 
 | ||||
|         try: | ||||
|             for each_question_div in questions_div: | ||||
|                 each_question_ask_div = each_question_div.find_element(By.CSS_SELECTOR, 'div.titles > div') | ||||
|                 if not each_question_ask_div is None: | ||||
|                     question_text = each_question_ask_div.text | ||||
|                     if question_text is None: | ||||
|                         question_text = "" | ||||
|                     if show_debug_message: | ||||
|                         print("questions_div text:", question_text) | ||||
| 
 | ||||
|                     seq = 0 | ||||
|                     if '個數字' in question_text: | ||||
|                         temp_string = question_text.split('第')[1] | ||||
|                         seq_string  = temp_string.split('個')[0] | ||||
|                         if len(seq_string) > 0: | ||||
|                             seq = int(seq_string) | ||||
| 
 | ||||
|                     if show_debug_message: | ||||
|                         print("seq:", seq) | ||||
| 
 | ||||
|                     question_answer_char = "" | ||||
|                     option_text_string = "" | ||||
|                     if '「' in question_text and '」' in question_text : | ||||
|                         option_text_string = question_text.split('「')[1] | ||||
|                         option_text_string = option_text_string.split('」')[0] | ||||
|                         option_text_string = option_text_string.replace(' ','') | ||||
|                         if seq > 0: | ||||
|                             question_answer_char = option_text_string.split(',')[seq-1] | ||||
|                             question_answer_char = question_answer_char.strip() | ||||
| 
 | ||||
|                     if len(question_answer_char) > 0: | ||||
|                         if show_debug_message: | ||||
|                             print("question_answer_char text:", question_answer_char) | ||||
|                         each_option_items_div = each_question_div.find_elements(By.CSS_SELECTOR, 'div.options > div.option-item') | ||||
|                         if not each_option_items_div is None: | ||||
|                             for each_option_div in each_option_items_div: | ||||
|                                 option_content_div = each_option_div.find_element(By.CSS_SELECTOR, 'div.content-list') | ||||
|                                 if not option_content_div is None: | ||||
|                                     option_content_div_text = option_content_div.text | ||||
|                                     if option_content_div is None: | ||||
|                                         option_content_div="" | ||||
|                                     option_content_div_text = option_content_div_text.strip() | ||||
|                                     if option_content_div_text == question_answer_char: | ||||
|                                         is_radio_clicked = force_press_button(each_option_div, By.CSS_SELECTOR, 'div.radio-wrapper') | ||||
|                                         break | ||||
|         except Exception as exc: | ||||
|             if show_debug_message: | ||||
|                 print(exc) | ||||
|             pass | ||||
| 
 | ||||
|     if is_radio_clicked: | ||||
|         questions_remain_div = None | ||||
|         questions_remain_text = "" | ||||
|         try: | ||||
|             questions_remain_div = driver.find_element(By.CSS_SELECTOR, 'div.surplus-questions-number') | ||||
|             if not questions_remain_div is None: | ||||
|                 questions_remain_text = questions_remain_div.text | ||||
|                 questions_remain_text = questions_remain_text.strip() | ||||
|         except Exception as exc: | ||||
|             if show_debug_message: | ||||
|                 print(exc) | ||||
|             pass | ||||
| 
 | ||||
|         if show_debug_message: | ||||
|             #print("questions_remain_text:", questions_remain_text) | ||||
|             pass | ||||
|          | ||||
|         if questions_remain_text == "0" or questions_remain_text == "": | ||||
|             is_button_clicked = False | ||||
|             #is_button_clicked = force_press_button(driver, By.CSS_SELECTOR, 'div.button-wrapper > div.button-text-multi-lines > div') | ||||
| 
 | ||||
|             # Message: Element <div class="text-tc"> is not clickable at point (198,566) because another element <div class="modal-wrapper landing-question"> obscures it | ||||
|             ''' | ||||
|             btn_submit = None | ||||
|             try: | ||||
|                 btn_submit = driver.find_element(By.CSS_SELECTOR, 'div.button-wrapper > div.button-text-multi-lines > div.text-tc') | ||||
|                 if not btn_submit is None: | ||||
|                     if btn_submit.is_enabled(): | ||||
|                         btn_submit.click() | ||||
|             except Exception as exc: | ||||
|                 if show_debug_message: | ||||
|                     print(exc) | ||||
|                 pass | ||||
|             ''' | ||||
| 
 | ||||
| 
 | ||||
| def urbtix_main(driver, url, config_dict): | ||||
|     # http://msg.urbtix.hk | ||||
|  | @ -6137,6 +6244,10 @@ def urbtix_main(driver, url, config_dict): | |||
|             pass | ||||
|         pass | ||||
| 
 | ||||
|     # for new survey. | ||||
|     if 'https://www.urbtix.hk/session/landing' == url: | ||||
|         urbtix_auto_survey(driver, config_dict) | ||||
| 
 | ||||
|     if '.hk/member-login' in url: | ||||
|         urbtix_account = config_dict["advanced"]["urbtix_account"] | ||||
|         if len(urbtix_account) > 2: | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue