Guest User

Untitled

a guest
Jan 16th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. import os
  2. import sys
  3. import io
  4. import time
  5. import shutil
  6. import logging
  7. import configparser
  8. from selenium import webdriver
  9. from selenium.webdriver.common.by import By
  10. from selenium.webdriver.support.wait import WebDriverWait
  11. from selenium.webdriver.support import expected_conditions as EC
  12.  
  13.  
  14. cf = configparser.ConfigParser()
  15. cf.read('urlconfig.conf')
  16. sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8') # 改变标准输出的默认编码
  17. os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
  18. browser = webdriver.Ie()
  19. isMiniWindow = cf.getboolean("web", "isMiniWindow")
  20. waitSecond = cf.getint("web", "waitSecond")
  21. closeTabSecond = cf.getint("web","closeTabSecond")
  22. if(isMiniWindow):
  23. browser.minimize_window()
  24.  
  25. def init():
  26. curDir = os.path.dirname(__file__);
  27. ieDir = 'C:\Program Files (x86)\Internet Explorer'
  28. if os.path.exists(ieDir) == False:
  29. ieDir = 'C:\Program Files\Internet Explorer'
  30. if os.path.exists(ieDir + '\IEDriverServer.exe') == False:
  31. shutil.copy(curDir + '\IEDriverServer.exe', ieDir + '\IEDriverServer.exe')
  32. logging.info('已复制IEDriverServer.exe至系统!')
  33. else:
  34. logging.info('IEDriverServer.exe已存在!')
  35.  
  36.  
  37. def initLogging():
  38. #初始化日志器
  39. logging.basicConfig(level=logging.INFO,
  40. format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
  41. datefmt='%a, %d %b %Y %H:%M:%S',
  42. filename='LogPermit.log',
  43. filemode='w')
  44. # 定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象#
  45. console = logging.StreamHandler()
  46. console.setLevel(logging.INFO)
  47. formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
  48. console.setFormatter(formatter)
  49. logging.getLogger('').addHandler(console)
  50.  
  51. def login(errorIndex):
  52. # 访问登录页面,等待一定时间,让js脚本加载完毕
  53. try:
  54. url = cf.get("web", "url")
  55. logging.info('打开登录页中!')
  56. browser.get(url)
  57. browser.switch_to.default_content()
  58. WebDriverWait(browser, 60).until(EC.presence_of_element_located((By.ID, 'txtUser')))
  59. # 输入用户名、输入密码、点击“登录”按钮
  60. password = browser.find_element_by_name('txtPSW')
  61. password.send_keys(cf.get("web", "pwd"))
  62. username = browser.find_element_by_name('txtUser')
  63. username.send_keys(cf.get("web", "username"))
  64. btn = browser.find_element_by_css_selector('input[type=submit]');
  65. btn.click()
  66. logging.info('输入用户名、输入密码,点击“登录”按钮中!')
  67. browser.implicitly_wait(10)
  68. WebDriverWait(browser, 60).until(EC.presence_of_element_located((By.ID, 'form1')))
  69. logging.info('已打开首页!')
  70. urls = str(cf.get("url", "url")).split('\n');
  71. index = 1
  72. for url in urls:
  73. if(index >= errorIndex):
  74. try:
  75. browser.execute_script("addTab('选项卡" + str(index) + "','" + url + "','');setTimeout(function(){var TabName='选项卡"+ str(index) + "';var tabStrip=top.$find('RightRadTabStrip');if(tabStrip!=null){var tab=tabStrip.findTabByText(TabName);if(tab!=null){deleteTab(tab)}}}," + str(closeTabSecond) + "000);")
  76. logging.info('打开选项卡' + str(index) + '完成!')
  77. index = index + 1
  78. time.sleep(waitSecond)
  79. result = EC.alert_is_present()(browser)
  80. if result:
  81. logging.info('弹出信息:' + str(result.text))
  82. result.accept()
  83. else:
  84. logging.info("alert 未弹出!")
  85. browser.switch_to.default_content()
  86. except Exception as err:
  87. logging.error(str(type(err)) + '\t' + str(err))
  88. login(index)
  89. logging.info('打开所有选项卡完成!')
  90. except Exception as err:
  91. logging.error(str(type(err)) + '\t' + str(err))
  92. browser.quit()
  93. finally:
  94. logging.info('程序关闭!')
  95. #os.system("taskkill /F /IM tohi_login.exe")
  96.  
  97. def main():
  98. initLogging();
  99. init();
  100. login(1);
  101.  
  102.  
  103. main();
Add Comment
Please, Sign In to add comment