Reputation: 605
I am new to Python . i am trying to parse below XML in python for a test summary.
<?xml version="1.0"?>
<SquishReport version="2.1">
<test name="HMI_testing">
<prolog time="2013-01-18T14:41:09+05:30"/>
<test name="tst_case1">
<prolog time="2013-01-18T14:41:09+05:30"/>
<verification name="VP5" file="D:/Squish/HMI_testing/tst_case1/test.py" type="properties" line="6">
<result time="2013-01-18T14:41:10+05:30" type="PASS">
<description>VP5: Object property comparison of ':_QMenu_3.enabled' passed</description>
<description type="DETAILED">'false' and 'false' are equal</description>
<description type="object">:_QMenu_3</description>
<description type="property">enabled</description>
<description type="failedValue">false</description>
</result>
</verification>
<epilog time="2013-01-18T14:41:11+05:30"/>
</test>
<test name="tst_Setup_Menu"> <prolog time="2013-01-18T14:41:11+05:30"/>
<verification name="VP1" file="D:/Squish/HMI_testing/tst_Setup_Menu/test.py" type="screenshot" line="6">
<result time="2013-01-18T14:41:12+05:30" type="PASS">
<description>VP1: Screenshot comparison of ':_QMenu_3' passed</description>
<description type="DETAILED">Screenshots are considered identical</description>
<description type="object">:_QMenu_3</description>
<description type="failedImage">Screenshots are considered identical</description>
</result>
</verification>
<verification name="VP2" file="D:/Squish/HMI_testing/tst_Setup_Menu/test.py" type="screenshot" line="8">
<result time="2013-01-18T14:41:16+05:30" type="FAIL">
<description>VP2: Screenshot comparison of ':_QMenu_3' failed</description>
<description type="DETAILED">Screenshots do not match. Differing screenshot saved as 'D:/Squish/HMI_testing/tst_Setup_Menu/verificationPoints\failedImages\failed_1.png'</description>
<description type="object">:_QMenu_3</description>
<description type="failedImage">D:/Squish/HMI_testing/tst_Setup_Menu/verificationPoints\failedImages\failed_1.png</description>
</result>
</verification>
<verification name="VP3" file="D:/Squish/HMI_testing/tst_Setup_Menu/test.py" type="screenshot" line="9">
<result time="2013-01-18T14:41:20+05:30" type="PASS">
<description>VP3: Screenshot comparison of ':_QMenu_4' passed</description>
<description type="DETAILED">Screenshots are considered identical</description>
<description type="object">:_QMenu_4</description>
<description type="failedImage">Screenshots are considered identical</description>
</result>
</verification>
<epilog time="2013-01-18T14:41:28+05:30"/>
</test>
<epilog time="2013-01-18T14:41:28+05:30"/>
</test>
</SquishReport>
i tried below code but i am not able to parse as per my need
import sys
import xml.dom.minidom as XY
#import xml.etree.ElementTree as ET
file = open("result.txt", "w")
tree = XY.parse('D:\\Squish\\squish results\\Results-On-2013-01-18_0241 PM.xml')
elem = tree.getElementsByTagName('test')
variable = elem[0].firstChild.data
print (variable)
What I am trying to do is, extract "HMI_testing" from first 'test' tag, "Test name" tst_case1, and Pass / fAIL FROM the xml file
Upvotes: 0
Views: 335
Reputation: 63777
Instead of
variable = elem[0].firstChild.data
use
variable = elem[0].getAttribute('name')
You are not looking for a child element but rather the attribute name
Upvotes: 1
Reputation: 9112
I recommend using Xpath, I've used it several times and is always handy and helpful: Xpath tutorial. It is also pretty easy to use.
Upvotes: 1