fix: setting up button listeners
This commit is contained in:
@@ -33,6 +33,7 @@ WEBURL = "https://crm.xiaoman.cn/business/export"
|
||||
APIURL = "https://crm.xiaoman.cn/api/opportunityRead/export"
|
||||
|
||||
def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
identity = short()
|
||||
parameters = vars(args)
|
||||
http = PoolManager()
|
||||
sp = ServiceProvider.default()
|
||||
@@ -63,11 +64,11 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
locate("input#password").send_keys(password)
|
||||
click("input.agree-checkbox")
|
||||
click("button.login-btn")
|
||||
logger.info('Waiting for authentication to complete...')
|
||||
except Exception as e:
|
||||
logger.critical('Unable to login to %s', parameters['url'], exc_info=e)
|
||||
return 3
|
||||
|
||||
logger.info('Waiting for authentication to complete...')
|
||||
while True:
|
||||
try:
|
||||
locate("#container", wait=False)
|
||||
@@ -80,13 +81,22 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
|
||||
while True:
|
||||
try:
|
||||
if buttons := driver.find_elements(By.CSS_SELECTOR, ".export-actions .okki-btn-primary"):
|
||||
identity = 'EXPORT'
|
||||
for button in buttons: driver.execute_script("arguments[0].addEventListener('click', () => arguments[0].parentElement.setAttribute(arguments[1], '1'));", button, identity)
|
||||
break
|
||||
finally:
|
||||
if not (buttons := driver.find_elements(By.CSS_SELECTOR, ".export-actions .okki-btn-primary")): raise ValueError()
|
||||
for button in buttons: driver.execute_script("arguments[0].addEventListener('click', () => arguments[0].parentElement.setAttribute(arguments[1], '1'));", button, identity)
|
||||
break
|
||||
except:
|
||||
sleep(1)
|
||||
|
||||
try:
|
||||
verified = False
|
||||
button = locate(".filter-actions .okki-btn-primary")
|
||||
driver.execute_script("window.__%s__ = () => arguments[0].click();" % identity, buttons[1])
|
||||
driver.execute_script("arguments[0].addEventListener('click', __%s__);" % identity, button)
|
||||
driver.execute_script("__%s__();" % identity)
|
||||
except Exception as e:
|
||||
logger.critical("Error while setting up button listeners", exc_info=e)
|
||||
return 4
|
||||
|
||||
while True:
|
||||
try:
|
||||
for index in count(0):
|
||||
@@ -95,18 +105,20 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
raise ValueError()
|
||||
except StaleElementReferenceException:
|
||||
logger.critical('Error while listening to button events')
|
||||
return 4
|
||||
return 5
|
||||
except ValueError:
|
||||
pass
|
||||
except:
|
||||
sleep(1)
|
||||
continue
|
||||
|
||||
try:
|
||||
locate(".safe-verify-dialog:not([style*='display: none']) .mm-modal-content .mm-modal-body input", wait=False).send_keys(parameters['password'])
|
||||
click(".mm-modal-footer button.okki-btn-primary")
|
||||
except:
|
||||
pass
|
||||
if not verified:
|
||||
try:
|
||||
locate(".safe-verify-dialog:not([style*='display: none']) .mm-modal-content .mm-modal-body input").send_keys(parameters['password'])
|
||||
click(".mm-modal-footer button.okki-btn-primary", wait=False)
|
||||
verified = True
|
||||
except:
|
||||
pass
|
||||
|
||||
while True:
|
||||
try:
|
||||
@@ -128,14 +140,14 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
logger.info('Read %d line(s) total', len(text))
|
||||
except Exception as e:
|
||||
logger.critical('Unable to load input data', exc_info=e)
|
||||
return 5
|
||||
return 6
|
||||
|
||||
try:
|
||||
file = Path('template.xlsx').resolve()
|
||||
template = openpyxl.load_workbook(file)
|
||||
except Exception as e:
|
||||
logger.critical('Unable to load template excel', exc_info=e)
|
||||
return 6
|
||||
return 7
|
||||
|
||||
header = next(data, None)
|
||||
source = template.active
|
||||
|
||||
Reference in New Issue
Block a user