diff options
Diffstat (limited to '')
-rw-r--r-- | dom/base/test/unit/test_generate_xpath.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/dom/base/test/unit/test_generate_xpath.js b/dom/base/test/unit/test_generate_xpath.js new file mode 100644 index 0000000000..e8c7043690 --- /dev/null +++ b/dom/base/test/unit/test_generate_xpath.js @@ -0,0 +1,85 @@ +function run_test() { + test_generate_xpath(); +} + +// TEST CODE + +function test_generate_xpath() { + let docString = ` + <html> + <body> + <label><input type="checkbox" id="input1" />Input 1</label> + <label><input type="checkbox" id="input2'" />Input 2</label> + <label><input type="checkbox" id='"input3"' />Input 3</label> + <label><input type="checkbox"/>Input 4</label> + <label><input type="checkbox" />Input 5</label> + </body> + </html> + `; + let doc = getParser().parseFromString(docString, "text/html"); + + // Test generate xpath for body. + info("Test generate xpath for body node"); + let body = doc.getElementsByTagName("body")[0]; + let bodyXPath = body.generateXPath(); + let bodyExpXPath = "/xhtml:html/xhtml:body"; + equal(bodyExpXPath, bodyXPath, " xpath generated for body"); + + // Test generate xpath for input with id. + info("Test generate xpath for input with id"); + let inputWithId = doc.getElementById("input1"); + let inputWithIdXPath = inputWithId.generateXPath(); + let inputWithIdExpXPath = "//xhtml:input[@id='input1']"; + equal( + inputWithIdExpXPath, + inputWithIdXPath, + " xpath generated for input with id" + ); + + // Test generate xpath for input with id has single quote. + info("Test generate xpath for input with id has single quote"); + let inputWithIdSingleQuote = doc.getElementsByTagName("input")[1]; + let inputWithIdXPathSingleQuote = inputWithIdSingleQuote.generateXPath(); + let inputWithIdExpXPathSingleQuote = '//xhtml:input[@id="input2\'"]'; + equal( + inputWithIdExpXPathSingleQuote, + inputWithIdXPathSingleQuote, + " xpath generated for input with id" + ); + + // Test generate xpath for input with id has double quote. + info("Test generate xpath for input with id has double quote"); + let inputWithIdDoubleQuote = doc.getElementsByTagName("input")[2]; + let inputWithIdXPathDoubleQuote = inputWithIdDoubleQuote.generateXPath(); + let inputWithIdExpXPathDoubleQuote = "//xhtml:input[@id='\"input3\"']"; + equal( + inputWithIdExpXPathDoubleQuote, + inputWithIdXPathDoubleQuote, + " xpath generated for input with id" + ); + + // Test generate xpath for input with id has both single and double quote. + info("Test generate xpath for input with id has single and double quote"); + let inputWithIdSingleDoubleQuote = doc.getElementsByTagName("input")[3]; + inputWithIdSingleDoubleQuote.setAttribute("id", "\"input'4"); + let inputWithIdXPathSingleDoubleQuote = + inputWithIdSingleDoubleQuote.generateXPath(); + let inputWithIdExpXPathSingleDoubleQuote = + "//xhtml:input[@id=concat('\"input',\"'\",'4')]"; + equal( + inputWithIdExpXPathSingleDoubleQuote, + inputWithIdXPathSingleDoubleQuote, + " xpath generated for input with id" + ); + + // Test generate xpath for input without id. + info("Test generate xpath for input without id"); + let inputNoId = doc.getElementsByTagName("input")[4]; + let inputNoIdXPath = inputNoId.generateXPath(); + let inputNoIdExpXPath = "/xhtml:html/xhtml:body/xhtml:label[5]/xhtml:input"; + equal( + inputNoIdExpXPath, + inputNoIdXPath, + " xpath generated for input without id" + ); +} |