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