用Python实现登录sv,访问http服务器,ftp服务器并下载资源
#-- coding: utf-8 --
import unittest
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
#import system
import os
import time
from selenium.webdriver.common.keys import Keys
import sys
print sys.getdefaultencoding()
reload(sys)
sys.setdefaultencoding(‘utf8’)
#system.setProperty(“webdriver.firefox.bin”, “C:/Program Files (x86)/Mozilla Firefox/firefox.exe”)
from ftplib import FTP
import os,string,datetime
import socket
import re
class MYFTP:
def init(self):
#
#self.serveraddr = serveraddr
#self.username = username
#self.password = password
#self.remotedir = remotedir
#self.port = port
self.ftp = FTP()
self.file_list = []
# self.ftp.set_debuglevel(2)
def del(self):
self.ftp.close()
# self.ftp.set_debuglevel(0)
def login(self,serveraddr,username,password,port):
self.serveraddr = serveraddr
self.username = username
self.password = password
self.port = port
ftp = self.ftp
try:
timeout = 10
socket.setdefaulttimeout(timeout)
ftp.set_pasv(True)
ftp.connect(self.serveraddr, self.port)
ftp.login(self.username, self.password)
print("login success")
except Exception,e:
print Exception,":",e
def download_file(self, localfile, remotefile):
file_handler = open(localfile, 'w')
self.ftp.retrbinary('RETR %s'%(remotefile), file_handler.write)
file_handler.close()
print("ftp download success")
def upload_file(self, localfile, remotefile):
if not os.path.isfile(localfile):
return
file_handler = open(localfile, 'r')
self.ftp.storbinary('STOR %s' %remotefile, file_handler)
file_handler.close()
def dowload_ftp_1(local_dir):
ftp_dir = (’/操作系统/Win7/Oem7F5.exe’).encode(‘gbk’)
#ftp_file_source = ftp_dir+(‘4MLinux-10.0-allinone-edition.iso’)
ftp = MYFTP()
ftp.login(“192.168.96.6”,“sgtest/gu_rongsong”,“talent”,“21”)
local_file = local_dir+‘test.exe’
ftp.download_file(local_file,ftp_dir)
#ftp.download_file(“D:/test.exe”,ftp_dir)
def dowload_ftp_2(local_dir):
ftp_dir = (’/NGFW/’)#.decode(‘utf8’)
file_name = (‘Topsec-JL-A14-1130-概念与设计方案.rar’)
ftp_file_source = ftp_dir+file_name
#print ftp_file_source
ftp = MYFTP()
ftp.login(“172.18.25.40”,“admin”,“talent”,“21”)
local_file = local_dir+‘test.rar’
ftp.download_file(local_file,ftp_file_source)
def login_sv_firefox(ipaddr,user,passwd):
status = 0
firefoxDriver=webdriver.Firefox(executable_path="geckodriver")
firefoxDriver.get(ipaddr)
windle_source = firefoxDriver.current_window_handle
print firefoxDriver.title
print firefoxDriver.current_url
print windle_source
all_handles = firefoxDriver.window_handles
time.sleep(5)
try:
#firefoxDriver.switch_to_alert().accept()
elem_name = firefoxDriver.find_element_by_name('name_1')
elem_name.send_keys(user.decode('utf8'))
time.sleep(3)
elem_passwd = firefoxDriver.find_element_by_name('pwd_1')
elem_passwd.send_keys(passwd)
time.sleep(3)
elem3 = firefoxDriver.find_element_by_id('con_one_1')
time.sleep(3)
elem3.send_keys(Keys.ENTER)
except:
print ('SV 认证出错,请检查用户名密码是否正确').encode('gbk')
logout_sv(firefoxDriver)
return status
status = 1
time.sleep(20)
try:
elem_source_0 = firefoxDriver.find_element_by_id('na_0')
time.sleep(5)
elem_source_0.click()
time.sleep(5)
all_handles = firefoxDriver.window_handles
for handle in all_handles:
#print handle
if handle != windle_source:
firefoxDriver.switch_to.window(handle)
#print firefoxDriver.title
if firefoxDriver.title=='IIS7':
print ('登录http服务器成功').encode('gbk')
firefoxDriver.close()
except:
print "no source 0"
firefoxDriver.switch_to.window(windle_source)
logout_sv(firefoxDriver)
#print
#return 0
'''
firefoxDriver.switch_to.window(windle_source)
try:
#handle_ftp = ''
elem_source_1 = firefoxDriver.find_element_by_id('na_1')
time.sleep(5)
#elem_source_1.click()
print elem_source_1.text
if elem_source_1.text=='25.40':
firefoxDriver.get('ftp://admin:talent@172.18.25.40/')
print ('私有ftp服务器登录成功').decode('utf8')
firefoxDriver.close()
except:
print ("no source 1 ")
firefoxDriver.switch_to.window(windle_source)
elem_source_2 = firefoxDriver.find_element_by_id('na_3')
elem_source_2.click()
time.sleep(2)
print elem_source_2.text
if elem_source_1.text=='ftp':
#firefoxDriver.get('ftp://gu_rongsong:talent@192.168.96.6/')
#print ('96.6 ftp服务器登录成功').decode('utf8')
firefoxDriver.close()
except:
print "no source 3 "
'''
firefoxDriver.switch_to.window(windle_source)
try:
elem_source_3 = firefoxDriver.find_element_by_id('na_2')
time.sleep(1)
elem_source_3.click()
time.sleep(2)
all_handles = firefoxDriver.window_handles
#ipaddr_webui = 'http://192.168.96.5'
user_name = 'lu_yanping'
passwd = 'talent'
for handle in all_handles:
#print handle
if handle != windle_source:
firefoxDriver.switch_to.window(handle)
print firefoxDriver.title
if '2010' in firefoxDriver.title:
print ('打开96.5服务器成功').encode('gbk')
elem1 = firefoxDriver.find_element_by_name('txtUid')
elem1.send_keys(user_name)
elem2 = firefoxDriver.find_element_by_name('txtPwd')
elem2.send_keys(passwd)
elem3 = firefoxDriver.find_element_by_id('btnSubmit')
elem3.send_keys(Keys.ENTER)
time.sleep(2)
#elem4 = firefoxDriver.find_element_by_id('tvTreeViewt19')
#elem4.click()
time.sleep(2)
#elem5 = firefoxDriver.find_element_by_id('tvTreeViewt21')
#elem5.click()
time.sleep(2)
#elem6 = firefoxDriver.find_element_by_name('btnAdd')
#elem6.click()
time.sleep(2)
print ('登陆96.5服务器成功').encode('gbk')
firefoxDriver.close()
except:
firefoxDriver.switch_to.window(windle_source)
logout_sv(firefoxDriver)
print "no source 2"
#return 0
time.sleep(5)
firefoxDriver.switch_to.window(windle_source)
firefoxDriver.switch_to.window()
#logout_sv(firefoxDriver)
time.sleep(15)
firefoxDriver.quit()
return status
#print firefoxDriver
def login_sv_google(ipaddr,user,passwd):
#firefoxDriver=webdriver.Firefox(executable_path="geckodriver")
#chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
#os.environ["webdriver.chrome.driver"] = chromedriver
firefoxDriver = webdriver.Chrome(executable_path="chromedriver")
#webdriver.Chrome()
firefoxDriver.get(ipaddr)
windle_source = firefoxDriver.current_window_handle
print firefoxDriver.title
print firefoxDriver.current_url
print windle_source
all_handles = firefoxDriver.window_handles
try:
firefoxDriver.switch_to_alert().accept()
elem_name = firefoxDriver.find_element_by_name('name_1')
elem_name.send_keys(user.decode('utf8'))
time.sleep(3)
elem_passwd = firefoxDriver.find_element_by_name('pwd_1')
elem_passwd.send_keys(passwd)
time.sleep(3)
elem3 = firefoxDriver.find_element_by_id('con_one_1')
time.sleep(3)
elem3.send_keys(Keys.ENTER)
except:
print ('SV 认证出错,请检查用户名密码是否正确').decode('utf8')
logout_sv(firefoxDriver)
return 1
time.sleep(20)
try:
elem_source_0 = firefoxDriver.find_element_by_id('na_0')
time.sleep(5)
elem_source_0.click()
time.sleep(5)
all_handles = firefoxDriver.window_handles
for handle in all_handles:
#print handle
if handle != windle_source:
firefoxDriver.switch_to.window(handle)
#print firefoxDriver.title
if firefoxDriver.title=='IIS7':
print ('登录http服务器成功').decode('utf8')
firefoxDriver.close()
except:
print "no source 0"
logout_sv(firefoxDriver)
#print
return 1
firefoxDriver.switch_to.window(windle_source)
try:
elem_source_3 = firefoxDriver.find_element_by_id('na_2')
time.sleep(1)
elem_source_3.click()
time.sleep(2)
all_handles = firefoxDriver.window_handles
#ipaddr_webui = 'http://192.168.96.5'
user_name = 'lu_yanping'
passwd = 'talent'
for handle in all_handles:
#print handle
if handle != windle_source:
firefoxDriver.switch_to.window(handle)
print firefoxDriver.title
if '2010' in firefoxDriver.title:
print ('打开96.5服务器成功').decode('utf8')
elem1 = firefoxDriver.find_element_by_name('txtUid')
elem1.send_keys(user_name)
elem2 = firefoxDriver.find_element_by_name('txtPwd')
elem2.send_keys(passwd)
elem3 = firefoxDriver.find_element_by_id('btnSubmit')
elem3.send_keys(Keys.ENTER)
time.sleep(2)
elem4 = firefoxDriver.find_element_by_id('tvTreeViewt19')
elem4.click()
time.sleep(2)
elem5 = firefoxDriver.find_element_by_id('tvTreeViewt21')
elem5.click()
time.sleep(2)
elem6 = firefoxDriver.find_element_by_name('btnAdd')
elem6.click()
time.sleep(2)
firefoxDriver.close()
except:
print "no source 2"
time.sleep(5)
firefoxDriver.switch_to.window(windle_source)
firefoxDriver.switch_to.window()
#logout_sv(firefoxDriver)
time.sleep(15)
firefoxDriver.quit()
#print firefoxDriver
def login_sv_iexplorer(ipaddr,user,passwd):
firefoxDriver=webdriver.Firefox()
#chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
#os.environ["webdriver.chrome.driver"] = chromedriver
#driver = webdriver.Chrome(chromedriver)
#driver = webdriver.Chrome()
firefoxDriver.get(ipaddr)
try:
elem_name = firefoxDriver.find_element_by_name('name_1')
elem_name.send_keys(user)
elem_passwd = firefoxDriver.find_element_by_name('pwd_1')
elem_passwd.send_keys(passwd)
elem3 = firefoxDriver.find_element_by_id('con_one_1')
elem3.send_keys(Keys.ENTER)
except:
print ('SV 认证出错,请检查用户名密码是否正确').decode('utf8')
time.sleep(10)
try:
elem_source_0 = firefoxDriver.find_element_by_id('na_0')
print elem_source_0.text()
elem_source_0.click()
except:
print "no source 0"
return 1
try:
elem_source_1 = firefoxDriver.find_element_by_id('na_1')
print elem_source_1.text()
elem_source_1.click()
except:
print "no source 1 "
try:
elem_source_2 = firefoxDriver.find_element_by_id('na_2')
print elem_source_2.text()
elem_source_2.click()
except:
print "no source 2 "
try:
elem_source_3 = firefoxDriver.find_element_by_id('na_3')
elem_source_3.click()
except:
print "no source 3"
try:
elem_source_4 = firefoxDriver.find_element_by_id('na_4')
elem_source_4.click()
except:
print "no source 4"
time.sleep(15)
firefoxDriver.quit()
print firefoxDriver
def logout_sv(firefoxDriver):
try:
userlogout_location = firefoxDriver.find_element_by_xpath("//[@id=‘u_name’]")
time.sleep(3)
userlogout_location.click()
logout_button = firefoxDriver.find_element_by_xpath("//[@id=‘menu_right’]/li[2]")
time.sleep(3)
logout_button.click()
time.sleep(3)
#message=firefoxDriver.switch_to_alert().text
#print(message)
firefoxDriver.switch_to_alert().accept()
print (‘注销当前用户成功’).encode(‘gbk’)
time.sleep(3)
firefoxDriver.close()
except:
print (‘注销当前用户’).encode(‘gbk’)
#firefoxDriver.switch_to_alert().
if name == ‘main’:
ipaddr = ‘https://172.18.25.85’
user = ‘zhang_hanchi’
passwd = ‘talent’
dir_local = ‘F:/py/’
#print “脚本名:”, sys.argv[0]
#dowload_ftp_1(dir_local)
#dowload_ftp_2(dir_local)
if len(sys.argv)==1:
print ("未传入参数,使用默认参数开始测试").encode('gbk')
login_sv_firefox(ipaddr,user,passwd)
#login_sv_google(ipaddr,user,passwd)
while(1):
try:
dowload_ftp_1(dir_local)
except:
print ('96.6下载出错').encode('gbk')
continue
try:
dowload_ftp_2(dir_local)
except:
print ('25.40下载出错').encode('gbk')
continue
time.sleep(120)
elif len(sys.argv)==5:
print ("传入参数个数正确,开始测试 ").encode('gbk')
result = 1
result = login_sv_firefox(sys.argv[1],sys.argv[2],sys.argv[3])
#dowload_ftp_1()
while(result):
try:
dowload_ftp_1(sys.argv[4])
except:
print ('96.6下载出错').encode('gbk')
continue
try:
dowload_ftp_2(sys.argv[4])
except:
print ('25.40下载出错').encode('gbk')
continue
time.sleep(120)
else:
print ("传入参数错误,请重新输入").encode('gbk')
sys.exit()