2014-07-08 4 views
0

그래서 HTML 파일에 테이블을 만드는 HTML 코드가있다. 여기에는 데이터에 포함될 헤더와 예제 행이 있습니다. 다음은 코드입니다.자이 썬을 사용하여 HTML 테이블에 행 추가하기

<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> 
<html> 
<head> 
<style type='text/css'> 
p {margin: 0em 0 0em 0} 
th {color: blue; text-align: left} 
tr {color: black; text-align: left} 
table {font-size: 25} 
table, th, td {border: 1px solid black} 
</style> 
<meta content='text/html; charset=ISO-8859-1'http-equiv='content-type'> 
<title>Test Results</title> 
</head> 
<body> 
<table> 
<tr> 
    <th>Test</th> 
    <th>Status</th> 
    <th>DateTime</th> 
    <th>Blank Lines</th> 
</tr> 
<tr> 
    <td>AreaStudyClimate</td> 
    <td><font color='green'>PASSED</font></td> 
    <td>20140707 11:38:37.473000</td> 
    <td>[]</td> 
</tr> 
</table> 
</body> 
</html> 

단순히 jython을 사용하여 데이터 행을 추가하려고합니다. 나는 그것을 어떻게 했는가, 그러나 그것은 꽤 못생긴 것처럼 보인다. 내가가 쓰고 싶은 동일한 파일의 원래 HTML 코드를 읽고 있어요 때문에이 변수로 설정

row +=" <tr>\n" \ 
     "  <td>%s</td>\n" \ 
     "  <td>%s</td>\n" \ 
     "  <td>%s</td>\n" \ 
     "  <td>%s</td>\n" \ 
     " </tr>\n" 

이유는 : 나는 다음 HTML 코드를 연결 한 변수를 만들 수 있습니다. 그래서 어떻게 설정했는지, 나는 말 하나 하나를 "추가"하지 않고 이전 행을 추가 행이 들어있는 코드로 바꾸십시오. for 루프를 사용하여 해당 정보를 추가하려고합니다. (필자의 경우에는/table을 읽을 때까지 기다렸다가 거기에 삽입합니다. - 테이블의 맨 아래에 넣습니다.) 나는 그것이 실패 할 경우이 통과되는 경우 녹색 또는 빨간색으로 원하기 때문에

time = str(datetime.now()).replace("-","") 
failed_lines = str(failed_fields).replace(",",".") 
if len(failed_fields) == 0: 
    status = "<font color='green'>PASSED</font>" 
else: 
    status = "<font color='red'>FAILED<font>" 

file = open("C:/psi-test-automation/SikuliX Projects/ValueChecking.sikuli/TestResults.html", 'r+') 
row = "" 
for line in file.readlines(): 
    if "/table" in line: 
     row +=" <tr>\n" \ 
     "  <td>%s</td>\n" \ 
     "  <td>%s</td>\n" \ 
     "  <td>%s</td>\n" \ 
     "  <td>%s</td>\n" \ 
     " </tr>\n"   
    row+=line 

newform = row % (form['title'], status, time, failed_lines) 
file.close() 
file = open("C:/psi-test-automation/SikuliX Projects/ValueChecking.sikuli/TestResults.html", 'w') 
file.write(newform) 
file.close() 

나는 색상 코드를 포함하는 "상태"변수가 : 여기 파이썬 코드입니다.

마지막 문제는 코드를 바꾸려면 필자가 readline을 사용하기 위해서 (적어도 필자가 볼 수있는 한) 읽기 모드에 있어야한다는 것입니다. 그러나 파일의 내용을 지우려면 쓰기 모드 (복사가 필요한 데이터를 지울 수 있기 때문에 시작할 수 없습니다)로되어 있어야합니다. 이 문제를 해결하기 위해 파일의 읽기 버전을 닫고 새 코드를 만든 후 쓰기 모드로 다시 엽니 다. 이것이 가장 좋은 방법이라고 생각합니다 (f.truncate()가 아무 것도하지 않았 음). 어느 한 쪽...).

요약하면, 저는 현재 이전 HTML 코드를 추가 행이 들어있는 업데이트 된 코드로 바꾸고 있습니다. jython 코드를 사용하여 HTML 테이블에 행을 추가하려고합니다.

죄송합니다. 그런 긴 게시물에는 죄송하지만, 많은 정보가 들어 있습니다.

+0

Jinja2와 같은 템플릿 엔진을 사용할 수 있습니까? – Nathaniel

+0

나는 addons/modules를 얻지 않는 것을 선호한다. 나는 기술적으로 자이 썬을 명확히해야한다고 생각한다. – user2869231

답변

0

로깅을위한 다른 접근 방식을 제안합니다. 새로운 테스트 데이터가 txt 또는 csv 파일에 추가 될 수 있습니다. 마녀는 추가 행을 추가하는 것만으로도 간단합니다. 테스트가 끝나면 txt 또는 csv 파일을 기반으로 새 HTML 파일이 만들어 질 수 있습니다 (어쨌든 오래된 HTML 파일을 덮어 쓰거나 읽지 않을 수 있음). 기본 로그 파일을 만들려면 logging module을 권장합니다.

+0

형식을 편집 할 필요가 있는데, txt 나 csv를 사용할 수 없다. 나는 그것을 자동으로 변환하는 방법을 잘 모르겠습니다. – user2869231

관련 문제