使用Jython将行添加到HTML表

时间:2014-07-08 15:09:47

标签: html jython

所以我有一些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代码。所以我如何设置,我没有&#34;添加&#34;每个说一行,而是用包含额外行的代码替换以前的代码。我使用for循环来到我想要添加该信息的位置(在我的情况下,我等到它读取/ table,然后我将其插入那里 - 将它放在表的底部)。这是python代码:

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()

我有&#34;状态&#34;变量包含颜色编码,因为我希望它在通过时为绿色,如果失败则为红色。

我的最后一个问题是,为了替换代码,我必须重新打开文件 - 为了使用readlines(至少,据我所见),它必须处于读取模式。但是,为了清除文件的内容,它似乎必须处于写入模式(我无法启动,因为它会清除我需要复制的数据)。为了解决这个问题,我关闭了文件的读取版本,在创建新代码之后,再次以写入模式打开它 - 我发现很难相信这是最好的方法(f.truncate()没有做到这一点做任何事情......)。

总而言之,我目前正在使用包含额外行的更新代码替换以前的HTML代码;我想使用jython代码只是向HTML表添加一行。

对于这么长的帖子感到抱歉,但是有很多信息要投入其中。

1 个答案:

答案 0 :(得分:0)

我建议采用不同的记录方法。可以将新的测试数据添加到txt或csv文件中,只需添加额外的行即可。在测试运行结束时,基于txt或csv文件可能会创建新的HTML文件(无论如何都要覆盖旧的HTML文件)。要创建基本日志文件,我建议logging module