from selenium
import webdriver
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.by
import By
from selenium.webdriver.support.ui
import WebDriverWait
from selenium.common.exceptions
import NoSuchElementException,WebDriverException
import selenium.webdriver.support.expected_conditions as EC
import time
from selenium.webdriver.chrome.options
import Options
import io
import os
import re
import urllib2
from datetime
import datetime
projectList=[
'*',
'**']
serverURL=
'****'
userProfile=
'C:/Users/***a'
consoleText=
'consoleText'
logPath=
'**'
def write_file(data,fileName):
file_name = logPath+fileName+r
'.txt'
append_write =
'a'
if os.path.exists(file_name):
append_write =
'w'
f =
open(file_name, append_write)
f.writelines(data)
f.close()
return file_name
def get_latest_version(driver,projectList,serverURL):
version=
[]
for i
in projectList:
### get latest version ID. Such as 31,32
url = serverURL+
str(i)
driver.get(url)
click_submit(driver)
attr = driver.find_elements_by_css_selector(
"div.build-icon>a")[0].get_attribute(
"href")
buildId = attr.split(
'/')[-2
]
### get log content with encoding utf-8
url = url+r
'/'+buildId+r
'/'+
consoleText
driver.get(url)
time.sleep(2
)
content = driver.page_source.encode(
"utf-8")
### write file to local, named with like rhel-buildId
### list format: os, logPath(local),buildId
version.append([i,write_file(content,i+
'#'+
buildId),buildId])
return version
def click_submit(driver):
if len(driver.find_elements_by_css_selector(
"input[name='j_password']")) >
0:
driver.find_element_by_css_selector("span[name='Submit'] button").click();
def get_test_summary(file_obj):
isSummary =
False
result =
[]
for line
in file_obj:
if not isSummary:
if 'Test Summary' in line:
isSummary =
True
elif 'End of Summary' in line:
break
else:
result.append(line)
return result
def get_common_issues(list1,list2):
common_issues =
[]
result = [l
for l
in list1
if l
in list2
and 'Failed: 0' not in l]
for ele
in result:
if ele !=
'\r\n' and ele !=
'\n':
common_issues.append(ele)
print ele
return common_issues
def get_server_log_path(file_obj):
for line
in file_obj:
if 'GQL Log is located at' in line:
return line.split()[-1
]
def get_summary_list(version):
summary_list =
[]
for os_ele
in version:
file_obj = open(os_ele[1],
'r')
summary_list.append(get_test_summary(file_obj))
os_ele.append(get_server_log_path(file_obj))
file_obj.close()
return summary_list
def write_summary_log(summary_log_name, common_issues,baseUrl):
for com_is
in common_issues:
com_is = com_is.split(
':')[0]
try:
response = urllib2.urlopen(baseUrl+r
'/'+
com_is)
case_log_path = write_file(response,com_is+datetime.today().strftime(
'%Y-%m-%d'))
#print 'case log path:',case_log_path
except:
continue
f = open(case_log_path,
'r')
data =
f.read()
f.close()
match = re.findall(r
'(?:(?!Test Case: ).)*Test Case: Fail',data,re.DOTALL)
for i
in match:
if os.path.exists(summary_log_name):
append_write =
'a'
else:
append_write =
'w'
f =
open(summary_log_name,append_write)
f.writelines('#########'+com_is+
'#########')
f.write('\r\n')
if i.startswith(
'est Case:'):
i = i[i.find(
'\n'):]
for parsed
in [line
for line
in i.split(
'\n')
if line.strip() !=
'']:
f.writelines(parsed)
f.write('\r\n')
f.close()
print 'Summary file put in ', summary_log_name
options =
webdriver.ChromeOptions()
options.add_argument('--user-data-dir='+
userProfile)
driver = webdriver.Chrome(executable_path=r
'C:/Python27/chromedriver.exe',chrome_options=
options)
version =
get_latest_version(driver,projectList,serverURL)
driver.quit()
summary_list =
get_summary_list(version)
common_issues = get_common_issues(summary_list[0],summary_list[1
])
baseUrl = version[0][-1
]
print baseUrl
summary_log_name = logPath + datetime.today().strftime(
'%Y-%m-%d') + r
'.txt'
if os.path.exists(summary_log_name):
os.remove(summary_log_name)
write_summary_log(summary_log_name, common_issues,baseUrl)
转载于:https://www.cnblogs.com/jin-wen-xin/p/7728134.html
相关资源:100个python练手小程序