Используется изнутри 1С для отправки сформированного csv файла.
# -*- coding: utf8 -*-
# alex~~~@zztop.ru, 2015
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import sys,codecs
from os.path import isfile
import ConfigParser
#http://habrahabr.ru/post/117236/
def setup_console(sys_enc="utf-8"):
reload(sys)
try:
if sys.platform.startswith("win"):
import ctypes
enc = "cp%d" % ctypes.windll.kernel32.GetOEMCP()
else:
enc = (sys.stdout.encoding if sys.stdout.isatty() else
sys.stderr.encoding if sys.stderr.isatty() else
sys.getfilesystemencoding() or sys_enc)
sys.setdefaultencoding(sys_enc)
if sys.stdout.isatty() and sys.stdout.encoding != enc:
sys.stdout = codecs.getwriter(enc)(sys.stdout, 'replace')
if sys.stderr.isatty() and sys.stderr.encoding != enc:
sys.stderr = codecs.getwriter(enc)(sys.stderr, 'replace')
except:
pass
def recreateconf():
try:
f1=open('ololo.conf','w')
f1.write("[MAIN]\nURL=http://parts.bmw.ru\nLOGIN=qwerty@mail.ru\nPASSWD=password123\nFILENAME=c:/temp/ololo.csv\nTESTMODE=on")
f1.close()
except:
print u"Невозможно записать файл ololo.conf - ошибка"
sys.exit(3)
setup_console()
if not isfile('phantomjs.exe'):
print u"Ошибка:\n"+\
"\tФайл PhantomJS.exe является необходимым драйвером браузера для работы программы"+"\n"+\
"\tНайти последнюю его версию можно здесь: http://phantomjs.org/download.html"
sys.exit(1)
if not isfile('renaultsend.conf'):
print u"Ошибка:\n"+\
"\tФайл ololo.conf является необходимым файлом конфигурации"+"\n"+\
"\tПримерный файл конфигурации создан, ознакомьтесь если требуется"
recreateconf()
sys.exit(2)
url=''
login=''
passwd=''
filename=''
testmode='off'
try:
cparser=ConfigParser.ConfigParser()
cparser.read('renaultsend.conf')
url=cparser.get('MAIN','URL')
login=cparser.get('MAIN','LOGIN')
passwd=cparser.get('MAIN','PASSWD')
filename=cparser.get('MAIN','FILENAME')
if cparser.has_option('MAIN','TESTMODE'):
testmode=cparser.get('MAIN','TESTMODE')
except:
print u"Ошибка:\n"+\
"\tНевозможно прочитать файл либо неверный формат файла конфигурации ololo.conf\n"\
"\tУдалите ololo.conf и перезапустите программу. Файл будет пересоздан"
sys.exit(4)
try:
driver=webdriver.PhantomJS()
retcode=0
driver.implicitly_wait(60)
driver.get(url)
#вводим логи/пароль+ввод в поле пароля
print u"Попытка отправки файла "+filename+"\n"
driver.find_element_by_xpath('//*[@id="minWidth"]/div[2]/div/div[1]/div/form/input[1]').send_keys(login)
driver.find_element_by_xpath('//*[@id="minWidth"]/div[2]/div/div[1]/div/form/input[2]').send_keys(passwd+Keys.ENTER)
driver.find_element_by_xpath('//*[@id="minWidth"]/div[2]/div[2]/div[1]/div[3]/a').click()
driver.find_element_by_xpath('//*[@id="minWidth"]/div[2]/div[2]/div[1]/a[2]').click()
driver.find_element_by_xpath("//input[@type='file']").send_keys(filename)
if testmode=="on":
try:
driver.save_screenshot("result.jpg")
print u"Включен testmode\n"+\
"Скриншот с результатом последней страницы result.jpg сброшен успешно"
except:
print u"Внимание: не удалось сохранить скриншот result.jpg"
else:
driver.find_element_by_xpath('//*[@id="minWidth"]/div[2]/div[2]/div[1]/form/input[2]').click()
except:
print u"Непонятная ошибка с сайтом - возможно изменился контент или неверный логин/пароль.\n"+\
"Если вы уверены что логин/пароль норм, попробуйте обратиться к разработчику alex~~~@zztop.ru ;)"
retcode=5
finally:
recreateconf()
try:
driver.quit()
except:
print u"Невозможно уничтожить созданный web driver, при работе произошла ошибка\n"
if retcode==0:
print u"Все прошло успешно!"
sys.exit(retcode)