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