I need to automate download of reports from serviceNow.
I've been able to automate it using python and selenium and win32com by following method.
https://test.service-now.com/sys_report_template.do?CSV&jvar_report_id=92a....7aa
And using selenium to access ServiceNow as well as modify firefox default download option to dump the file to a folder on windows machine.
However, Since all of this may be ported to a linux server , we would like to port it to SOAP or CURL.
I came across serviceNow libraries for python here.
I tried it out and following code is working if I set login , password and instance-name as listed at the site using following from ServiceNow.py
<pre class="lang-py s-code-block"><span style="color: #ff0000;"><em><strong><code class="hljs language-python"><span class="hljs-keyword">class</span> <span class="hljs-title class_">Change</span>(<span class="hljs-title class_ inherited__">Base</span>):
__table__ = <span class="hljs-string">'change_request.do</span></code></strong></em></span></pre>
and following within clientside script as listed on site.
<pre class="lang-py s-code-block"><span style="color: #ff0000;"><strong><code class="hljs language-python"><span class="hljs-comment"># Fetch changes updated on the last 5 minutes</span>
changes = chg.last_updated(minutes=<span class="hljs-number">5</span>)
<span class="hljs-comment">#print changes client side script.</span>
<span class="hljs-keyword">for</span> eachline <span class="hljs-keyword">in</span> changes:
<span class="hljs-built_in">print</span> eachline<br><br><span style="color: #000000;"></span></code></strong></span></pre>
However, When I replace URL with sys_report_template.do, I am getting error
<pre class="lang-py s-code-block"><strong><span style="background-color: #ff0000;"><code class="hljs language-python">Traceback (most recent call last):
File <span class="hljs-string">"C:\Python27\lib\site-packages\SOAPpy\Parser.py"</span>, line <span class="hljs-number">1080</span>, <span class="hljs-keyword">in</span> _parseSOAP
parser.parse(inpsrc)
File <span class="hljs-string">"C:\Python27\Lib\xml\sax\expatreader.py"</span>, line <span class="hljs-number">107</span>, <span class="hljs-keyword">in</span> parse
xmlreader.IncrementalParser.parse(self, source)
File <span class="hljs-string">"C:\Python27\Lib\xml\sax\xmlreader.py"</span>, line <span class="hljs-number">125</span>, <span class="hljs-keyword">in</span> parse
self.close()
File <span class="hljs-string">"C:\Python27\Lib\xml\sax\expatreader.py"</span>, line <span class="hljs-number">220</span>, <span class="hljs-keyword">in</span> close
self.feed(<span class="hljs-string">""</span>, isFinal = <span class="hljs-number">1</span>)
File <span class="hljs-string">"C:\Python27\Lib\xml\sax\expatreader.py"</span>, line <span class="hljs-number">214</span>, <span class="hljs-keyword">in</span> feed
self._err_handler.fatalError(exc)
File <span class="hljs-string">"C:\Python27\Lib\xml\sax\handler.py"</span>, line <span class="hljs-number">38</span>, <span class="hljs-keyword">in</span> fatalError
<span class="hljs-keyword">raise</span> exception
SAXParseException: <unknown>:<span class="hljs-number">1</span>:<span class="hljs-number">0</span>: no element found
</code></span></strong></pre>
Here is relevent code
<pre class="lang-py s-code-block"><strong><span style="background-color: #ff0000;"><code class="hljs language-python"><span class="hljs-keyword">from</span> servicenow <span class="hljs-keyword">import</span> ServiceNow
<span class="hljs-keyword">from</span> servicenow <span class="hljs-keyword">import</span> Connection
<span class="hljs-keyword">from</span> servicenow.drivers <span class="hljs-keyword">import</span> SOAP
<span class="hljs-comment"># For SOAP connection</span>
conn = SOAP.Auth(username=<span class="hljs-string">'abc'</span>, password=<span class="hljs-string">'def'</span>, instance=<span class="hljs-string">'test'</span>)
rpt = ServiceNow.Base(conn)
rpt.__table__ = <span class="hljs-string">"sys_report_template.do?CSV"</span>
<span class="hljs-comment">#jvar_report_id replaced with .... to protect confidentiality</span>
report = rpt.fetch_one({<span class="hljs-string">'jvar_report_id'</span>: <span class="hljs-string">'92a6760a......aas'</span>})
<span class="hljs-keyword">for</span> eachline <span class="hljs-keyword">in</span> report:
<span class="hljs-built_in">print</span> eachline</code></span></strong></pre>
<pre class="lang-py s-code-block"><span style="color: #ff0000;"><strong><code class="hljs language-python"><span style="color: #000000; background-color: #ffffff;"></span></code></strong></span></pre>
So, my question is , what can be done to make this work? I looked on web for resources and help, but didn't find any.