add locker for page reload
This commit is contained in:
+32
-23
@@ -48,11 +48,13 @@ class CommandorPage:
|
|||||||
|
|
||||||
def __init__(self, contact: ContactPojo, store_type=0, proxy_type=0):
|
def __init__(self, contact: ContactPojo, store_type=0, proxy_type=0):
|
||||||
self.otp_value = None
|
self.otp_value = None
|
||||||
self.logger = logging.getLogger("CommandorPage")
|
self.logger = logging.getLogger("CommandorPage:" + str(contact.phone))
|
||||||
self.is_finished = False
|
self.is_finished = False
|
||||||
self.contact = contact
|
self.contact = contact
|
||||||
self.proxy_type = proxy_type
|
self.proxy_type = proxy_type
|
||||||
self.is_evnet_sent = False
|
self.is_event_sent = False
|
||||||
|
self.is_captcha_in_error = False
|
||||||
|
self.is_filling_fields = False
|
||||||
# 0: random
|
# 0: random
|
||||||
# 1: faubourg
|
# 1: faubourg
|
||||||
# 2: George
|
# 2: George
|
||||||
@@ -66,12 +68,12 @@ class CommandorPage:
|
|||||||
|
|
||||||
def on_success(self, result: ReserveResultPojo):
|
def on_success(self, result: ReserveResultPojo):
|
||||||
self.logger.info("on_success called.")
|
self.logger.info("on_success called.")
|
||||||
if not self.is_evnet_sent:
|
self.is_finished = True
|
||||||
|
if not self.is_event_sent:
|
||||||
self.logger.info("will send successful event")
|
self.logger.info("will send successful event")
|
||||||
self.logger.info(result)
|
self.logger.info(result)
|
||||||
params.oracle_log_sender.send_appoint_result(result)
|
params.oracle_log_sender.send_appoint_result(result)
|
||||||
self.is_evnet_sent = True
|
self.is_event_sent = True
|
||||||
self.is_finished = True
|
|
||||||
|
|
||||||
def timeout_occurred(self):
|
def timeout_occurred(self):
|
||||||
params.oracle_log_sender.send_timeout_log(self.contact)
|
params.oracle_log_sender.send_timeout_log(self.contact)
|
||||||
@@ -95,7 +97,6 @@ class CommandorPage:
|
|||||||
"username": proxy_username,
|
"username": proxy_username,
|
||||||
"password": params.PROXY_PASSWORD
|
"password": params.PROXY_PASSWORD
|
||||||
}
|
}
|
||||||
# self.fill_fields()
|
|
||||||
# wait for sms_code field
|
# wait for sms_code field
|
||||||
# self.clickOnValidBtn()
|
# self.clickOnValidBtn()
|
||||||
self.thread_event = e
|
self.thread_event = e
|
||||||
@@ -109,7 +110,6 @@ class CommandorPage:
|
|||||||
self.clickOnValidBtn()
|
self.clickOnValidBtn()
|
||||||
otp_sent = self.page.locator(MESSAGE_FIELD_CLASS)
|
otp_sent = self.page.locator(MESSAGE_FIELD_CLASS)
|
||||||
otp_sent.wait_for(state='visible', timeout=TIME_OUT)
|
otp_sent.wait_for(state='visible', timeout=TIME_OUT)
|
||||||
# print("message is:" + message)
|
|
||||||
time.sleep(get_random_wait_time())
|
time.sleep(get_random_wait_time())
|
||||||
message = self.page.content()
|
message = self.page.content()
|
||||||
if CONFIRMED_MESSAGE in message:
|
if CONFIRMED_MESSAGE in message:
|
||||||
@@ -121,15 +121,17 @@ class CommandorPage:
|
|||||||
self.termine()
|
self.termine()
|
||||||
|
|
||||||
def fill_fields(self):
|
def fill_fields(self):
|
||||||
self.logger.info("will call fill_fields for " + str(self.contact.phone))
|
if not self.is_filling_fields:
|
||||||
self._set_name(self.contact.last_name, self.contact.first_name)
|
self.is_filling_fields = True
|
||||||
self._setPhoneCountryAndStore()
|
self.logger.info("will call fill_fields for " + str(self.contact.phone))
|
||||||
self._setPhoneNumber(self.contact.phone)
|
self._set_name(self.contact.last_name, self.contact.first_name)
|
||||||
self._set_email(self.contact.mail)
|
self._setPhoneCountryAndStore()
|
||||||
self.setIdNumber(self.contact.passport)
|
self._setPhoneNumber(self.contact.phone)
|
||||||
#
|
self._set_email(self.contact.mail)
|
||||||
self._checkCgu()
|
self.setIdNumber(self.contact.passport)
|
||||||
self.resolve_captcha()
|
self._checkCgu()
|
||||||
|
self.resolve_captcha()
|
||||||
|
self.is_filling_fields = False
|
||||||
|
|
||||||
def start_browser(self, proxy, pwright, device) -> Union[str, None]:
|
def start_browser(self, proxy, pwright, device) -> Union[str, None]:
|
||||||
try:
|
try:
|
||||||
@@ -162,7 +164,7 @@ class CommandorPage:
|
|||||||
pattern = re.compile(REGEX_RDV_URL)
|
pattern = re.compile(REGEX_RDV_URL)
|
||||||
if pattern.match(response.url):
|
if pattern.match(response.url):
|
||||||
self.logger.info("result url found: " + response.url)
|
self.logger.info("result url found: " + response.url)
|
||||||
self.publish_message_to_queue(self.contact, PublishType.PENDING, response.url)
|
# self.publish_message_to_queue(self.contact, PublishType.PENDING, response.url)
|
||||||
|
|
||||||
def start_page(self, proxy):
|
def start_page(self, proxy):
|
||||||
e = threading.Event()
|
e = threading.Event()
|
||||||
@@ -181,7 +183,7 @@ class CommandorPage:
|
|||||||
self.publish_message_to_queue(self.contact, PublishType.SUCCESS, self.page.url)
|
self.publish_message_to_queue(self.contact, PublishType.SUCCESS, self.page.url)
|
||||||
self.get_errors()
|
self.get_errors()
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
print(error)
|
self.logger.error(error)
|
||||||
|
|
||||||
def on_document_loaded(self):
|
def on_document_loaded(self):
|
||||||
self.logger.info("on_document_loaded called")
|
self.logger.info("on_document_loaded called")
|
||||||
@@ -231,7 +233,7 @@ class CommandorPage:
|
|||||||
items = self.page.query_selector("div.alert")
|
items = self.page.query_selector("div.alert")
|
||||||
if items:
|
if items:
|
||||||
erro_content = items.inner_html()
|
erro_content = items.inner_html()
|
||||||
print("错误:" + erro_content)
|
self.logger.info("错误:" + erro_content)
|
||||||
self._handle_errors(erro_content)
|
self._handle_errors(erro_content)
|
||||||
except Exception as ext:
|
except Exception as ext:
|
||||||
self.logger.error(ext)
|
self.logger.error(ext)
|
||||||
@@ -250,9 +252,12 @@ class CommandorPage:
|
|||||||
self.browser.close()
|
self.browser.close()
|
||||||
elif CAPTCHA_ERROR_MESSAGE in erro_content:
|
elif CAPTCHA_ERROR_MESSAGE in erro_content:
|
||||||
# this email has been already used
|
# this email has been already used
|
||||||
|
self.is_captcha_in_error = True
|
||||||
params.oracle_log_sender.send_captcha_error(self.contact)
|
params.oracle_log_sender.send_captcha_error(self.contact)
|
||||||
# self.page.reload(timeout=PAGE_TIMEOUT)
|
# no need to retry captcha, if retry ,will generate DOUBLE_REQUEST_ERROR_MESSAGE
|
||||||
self.resolve_captcha()
|
time.sleep(2)
|
||||||
|
self.browser.close()
|
||||||
|
# self.resolve_captcha()
|
||||||
|
|
||||||
def _set_email(self, email):
|
def _set_email(self, email):
|
||||||
time.sleep(get_random_wait_time())
|
time.sleep(get_random_wait_time())
|
||||||
@@ -332,10 +337,14 @@ class CommandorPage:
|
|||||||
self.clickOnValidBtn()
|
self.clickOnValidBtn()
|
||||||
# wait for 20s
|
# wait for 20s
|
||||||
time.sleep(20)
|
time.sleep(20)
|
||||||
self.clickOnValidBtn()
|
if not self.is_finished:
|
||||||
|
if not self.is_captcha_in_error:
|
||||||
|
self.clickOnValidBtn()
|
||||||
|
else:
|
||||||
|
self.is_captcha_in_error = False
|
||||||
|
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
print(error)
|
self.logger.error(error)
|
||||||
self.page.reload(timeout=PAGE_TIMEOUT)
|
self.page.reload(timeout=PAGE_TIMEOUT)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user