使用javascript从静态HTML页面编辑本地xml文件时出错

Error in editing a local xml file from a static HTML page using javascript

本文关键字:xml 文件 出错 编辑 javascript 静态 HTML 使用      更新时间:2023-09-26

我在本地存储(硬盘驱动器)上有一个静态html页面。我这里没有使用任何类型的服务器。与此同时,我有一个名为testng.xml的xml文件,我需要从html编辑按钮点击使用javascript。

我需要将<include>标签替换为<exclude>标签,反之亦然,基于用户通过网页上的复选框选择。然后通过单击按钮执行测试xml。

从html按钮调用函数,如下所示

<input type="submit" onclick="editTestNG()" value="Execute Selected Tests">

下面是我编辑xml的代码。

<script type="text/javascript">
function editTestNG() 
{
  xmlHttp = new XMLHttpRequest();
  xmlHttp.open("GET", "testng.xml", false);
  xmlHttp.send();
  xmlDoc = xmlHttp.responseXML;
  txt = "";
  x = document.getElementsByName("check");
  document.write(x.length + "<br>");  // x.length is number of checkboxes on html page
  z = xmlDoc.getElementsByTagName("run")[1];
  y = z.children;
  document.write(y.length + "<br>"); // y.length is the number of xml child nodes 
  document.write(x.length + "<br>");  // x.length is number of checkboxes on html page
  for(i=0;i<x.length;i++)
  {
    document.write("abc");
    if(x[i].type == 'checkbox')
    {  
        document.writeln("def");
        if(x[i].checked == "true" && y[i].nodeName == "exclude")
        {
            document.writeln("ghi");
            txt = y[i].getAttribute("name");          
            newTag = xmlDoc.createElement("include");
            newTag.setAttribute("name",txt);
            p = z.replaceChild(newTag, y[i]); 
            document.write(p.nodeName+"<br>")
            document.write(newTag.nodeName + "::"+ newTag.getAttribute("name")+"<br>");
        }
        if(x[i].checked == "false" && y[i].nodeName == "include")
        {
            document.writeln("jkl");
            txt = y[i].getAttribute("name");          
            newTag = xmlDoc.createElement("exclude");
            newTag.setAttribute("name",txt);
            p = z.replaceChild(newTag, y[i]); 
            document.write(p.nodeName+"<br>")
            document.write(newTag.nodeName + "::"+ newTag.getAttribute("name")+"<br>");
        }
    }
}
  y = z.children;
  for(i=0;i<y.length;i++)
  {
    document.writeln("<br>"+y[i].nodeName + " ## "+ y[i].getAttribute("name")+"<br>");
  }
}
</script>

点击按钮后在html页面上的输出如下图

140  
7    
0    
exclude ## Group_CCMS_Login
exclude ## Group_CCR_Create_New
exclude ## Group_CCR_Create_New_EngType_M
exclude ## Group_CCR_Create_New_EngType_P
exclude ## Group_Full_ID_Search
include ## Group_Run_Query
exclude ## Group_Dup_Undup

我能够检索xml文件和z和y变量中的元素。同样在第二个for循环中,打印包含xml节点名称和属性的输出。但是在y变量中获得xml数据后,我无法获得或使用任何html页面元素,如复选框。

x.length的值最初为140,y.length为7,但随后x.length变为0,并且我的第一个for循环没有执行。

我无法理解为什么我不能访问html元素后获得xml数据。

我从未尝试过,但根据我的理解,您可以创建一个bash文件,然后使用jsp代码执行该bash文件。在HTML中添加jsp代码。

参考:

从JSP页面执行bash脚本

现在正如你所说的"我需要在HTML中准备一个带有复选框的用户界面,用于选择或取消选择要运行的测试,并通过单击按钮执行它们"

为此,您可能需要创建不同的测试套件,因此您需要分别创建更多的bash。

参考:http://grokbase.com/t/gg/selenium-users/139r0nszp3/how-to-run-multiple-xml-files-with-testng