Мне нужно автоматизировать загрузку отчетов из serviceNow
.
Мне удалось автоматизировать это с помощью python
, selenium
и win32com
следующим способом.https://test.service-now.com/sys_report_template.do?CSV&jvar_report_id=92a....7aa
И с помощью selenium
получить доступ к serviceNow
, а также изменить firefox
параметр загрузки по умолчанию, чтобы выгрузить файл в папку на windows
машине.
Однако, поскольку все это может быть перенесено на сервер linux
, мы хотели бы перенести его на SOAP
или CURL
.
Я наткнулся на serviceNow
библиотек для python
здесь.
Я попробовал это, и следующий код работает, если я установил логин, пароль и имя экземпляра, как указано на сайте, используя следующее из ServiceNow.py
class Change(Base):
__table__ = 'change_request.do'
и следуйте скрипту на стороне клиента, как указано на сайте.
# Fetch changes updated on the last 5 minutes
changes = chg.last_updated(minutes=5)
#print changes client side script.
for eachline in changes:
print eachline
Однако, когда я заменяю URL на sys_report_template.do
, я получаю сообщение об ошибке
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\SOAPpy\Parser.py", line 1080, in _parseSOAP
parser.parse(inpsrc)
File "C:\Python27\Lib\xml\sax\expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "C:\Python27\Lib\xml\sax\xmlreader.py", line 125, in parse
self.close()
File "C:\Python27\Lib\xml\sax\expatreader.py", line 220, in close
self.feed("", isFinal = 1)
File "C:\Python27\Lib\xml\sax\expatreader.py", line 214, in feed
self._err_handler.fatalError(exc)
File "C:\Python27\Lib\xml\sax\handler.py", line 38, in fatalError
raise exception
SAXParseException: <unknown>:1:0: no element found
Вот соответствующий код
from servicenow import ServiceNow
from servicenow import Connection
from servicenow.drivers import SOAP
# For SOAP connection
conn = SOAP.Auth(username='abc', password='def', instance='test')
rpt = ServiceNow.Base(conn)
rpt.__table__ = "sys_report_template.do?CSV"
#jvar_report_id replaced with .... to protect confidentiality
report = rpt.fetch_one({'jvar_report_id': '92a6760a......aas'})
for eachline in report:
print eachline
Итак, мой вопрос, что можно сделать, чтобы заставить эту работу? Я искал в Интернете ресурсы и помощь, но ничего не нашел.
Любая помощь приветствуется.