[INTERFACE]
DIALOG, "Старт баузера", 864, 207;
STATIC, "Браузер", 4, 4, 60, 20;
COMBO, "Указать путь к браузеру и драйверу""Консольный браузер PhantomJS в Фоновом режиме""Mozilla Firefox с указанием пути к браузеру""Chrome", 92, 0, 452, 112, string BR;
CHECK, "Использовать прокси", 548, 4, 136, 20, int PROXI;
EDIT, 688, 4, 164, 20, string PRXPOR;
CHECK, "Установить плагин (расширение) .crx для Chrome", 4, 28, 276, 20, int Extension;
EDIT, 284, 28, 452, 20, string Extension_Path;
BUTTON_FILE, "Выбрать файл .crx", 740, 28, 112, 20, Extension_Path;
CHECK, "Указать профиль с его расширениями и настройками для Mozilla Firefox", 4, 52, 388, 20, int Profile;
EDIT, 396, 52, 320, 20, string Profile_Path;
BUTTON_PATH, "Выбрать путь к профию", 720, 52, 132, 20, Profile_Path;
STATIC, "Путь к браузеру", 4, 76, 84, 20;
EDIT, 92, 76, 656, 20, unknown Path_Browser;
BUTTON_FILE, "Выбрать браузер", 752, 76, 100, 20, Path_Browser;
STATIC, "Путь к драйверу", 4, 100, 88, 20;
EDIT, 92, 100, 656, 20, unknown Path_Driver;
BUTTON_FILE, "Выбрать драйвер", 752, 100, 100, 20, Path_Driver;
COMBO, "Активный режим""Фоновый режим", 4, 124, 168, 80, string Mode;
STATIC, "Разрешение окна X", 196, 124, 100, 20;
EDIT, 300, 124, 100, 20, int eX;
STATIC, "Y", 444, 124, 12, 20;
EDIT, 460, 124, 100, 20, int eY;
BUTTON_OK, "Принять", 644, 152, 100, 20;
BUTTON_CANCEL, "Закрыть", 752, 152, 100, 20;
[END]

[APPEARANCE]
COLOR = 55, 125, 55;
SIZE_X = 10;
SIZE_Y =6;
[END]

[INFO]
[ENDL]>>~GET(regexsearch(~BR~, "(Указать путь)|(Chrome)|(Mozilla Firefox)|(PhantomJS)"))~>>[ENDL]>>Mode
[END]

[GLOBAL_SINGLE_CODE_TOP]     
external(INT, "ShellExecuteA", "ShellExecuteA", "Shell32.dll");
[END]

[ASSOC_VAR]
BR="Указать путь к браузеру и драйверу";
PROXI=0;
PRXPOR="121.0.0.1:80";
Extension=0;
Extension_Path=pathfolder()+"BrowserExtension\ChromeCrx\KiborAutomation.crx";
Profile=0;
Profile_Path="C:\Users\_ПОЛЬЗОВАТЕЛЬ_\AppData\Roaming\Mozilla\Firefox\Profiles\_ВАШ_ПРОФИЛЬ_";
Path_Browser ="C:\Program Files\Mozilla Firefox\firefox.exe";
Path_Driver=pathfolder()+"python\webdriver\geckodriver.exe";
Mode="Активный режим";
eX=1366;
eY=768;
[END]

[GLOBAL_VAR]
int Import_StartBrowser=0;  
[END]

[EVENT]
IF (BR!="Chrome")ENABLE(GETID(Extension), 0);
IF (BR=="Chrome")ENABLE(GETID(Extension), 1);
IF (BR=="Chrome")ENABLE(GETID(Profile), 0);
IF (BR=="Консольный браузер PhantomJS в Фоновом режиме")ENABLE(GETID(Profile), 0);
IF (BR=="Указать путь к браузеру и драйверу")ENABLE(GETID(Profile), 1);
IF (BR=="Mozilla Firefox с указанием пути к браузеру")ENABLE(GETID(Profile), 1);
IF (Extension==1)ENABLE(GETID(Extension_Path), 1);
IF (Extension==0)ENABLE(GETID(Extension_Path), 0);
IF (Profile==1)ENABLE(GETID(Profile_Path), 1);
IF (Profile==0)ENABLE(GETID(Profile_Path), 0);
IF (PROXI==1)ENABLE(GETID(PRXPOR), 1);
IF (PROXI==0)ENABLE(GETID(PRXPOR), 0);
IF (BR=="Консольный браузер PhantomJS в Фоновом режиме")ENABLE(GETID(Path_Browser), 0);
IF (BR=="Chrome")ENABLE(GETID(Path_Browser), 0);
IF (BR!="Указать путь к браузеру и драйверу")ENABLE(GETID(Path_Driver), 0);
IF (BR=="Консольный браузер PhantomJS в Фоновом режиме")ENABLE(GETID(Mode), 0);
IF (BR=="Указать путь к браузеру и драйверу")ENABLE(GETID(Path_Browser), 1);
IF (BR=="Указать путь к браузеру и драйверу")ENABLE(GETID(Path_Driver), 1);
IF (BR=="Указать путь к браузеру и драйверу")ENABLE(GETID(Mode), 1);
IF (BR=="Mozilla Firefox с указанием пути к браузеру")ENABLE(GETID(Path_Browser), 1);
IF (BR=="Mozilla Firefox с указанием пути к браузеру")ENABLE(GETID(Mode), 1);
IF (BR=="Chrome")ENABLE(GETID(Mode), 1);
[END]


[FUNCTION_BODY]
function(int proxi, string prxpor, string br, string path_browser, string path_driver, string mode, int ex, int ey, int extension, string extension_path, int profile, string profile_path)
{
  if (proxi)
  {
  string prx, por;
  regexsearch(1, #prx, prxpor, "(.*)+(?=:)");
  regexsearch(1, #por, prxpor, "(?<=:)(.*)+");
  }
  if (Import_StartBrowser==0)  
  {  
  Import_StartBrowser=1; 
  __python_sync
#Импорт
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.proxy import *
__end_python    
  }
regexreplace(-1, #path_browser, path_browser, "\\", "/");
regexreplace(-1, #path_driver, path_driver, "\\", "/");
if (extension) regexreplace(-1, #extension_path, extension_path, "\\", "/");
  if (profile)
  {
  string tprofilepath;
    if (br=="Mozilla Firefox с указанием пути к браузеру" || (br=="Указать путь к браузеру и драйверу" && regexsearch(1, #tprofilepath, path_browser, "firefox")))
    {
    if (regexsearch(1, #tprofilepath, profile_path, "_ПОЛЬЗОВАТЕЛЬ_") || regexsearch(1, #tprofilepath, profile_path, "_ВАШ_ПРОФИЛЬ_")) messagebox ("Путь к профилю^r^n"+profile_path+"^r^nуказан для примера.^r^nУкажите путь к своему профилю.");
    }
  regexreplace(-1, #profile_path, profile_path, "\\", "/");
  }
sendgetpython("ex = r^'"+format(ex)+"^'");
sendgetpython("ey = r^'"+format(ey)+"^'");
  if (br=="Консольный браузер PhantomJS в Фоновом режиме")  
  {  
  sendgetpython("binary = r^'"+pathfolder()+"phantomjs\bin\phantomjs.exe^'");
    if (proxi)
    {
    __python_sync #Подключаем прокси__end_python  
    sendgetpython("service_args = [");
    sendgetpython("    ^'--proxy="+prx+":"+por+"^',");
    __python_sync
    '--proxy-type=http',
    ]
#Запускаем браузер
web = webdriver.PhantomJS(binary, service_args=service_args)
web.set_window_size(ex, ey)
__end_python   
    }
    else
    {
    __python_sync
#Запускаем браузер
web = webdriver.PhantomJS(binary)
web.set_window_size(ex, ey)
__end_python   
    } 
  }   
  else 
  {  
  if (br=="Mozilla Firefox с указанием пути к браузеру") path_driver=pathfolder()+"python\webdriver\geckodriver.exe";
  if (br=="Chrome") path_driver=pathfolder()+"python\webdriver\chromedriver.exe";
  sendgetpython("exe_path = r^'"+path_driver+"^'"); 
  string t; 
    if (regexsearch(1, #t, path_driver, "chromedriver.exe", IGNORECASE))
    {
    string Throme;
      if (mode=="Фоновый режим") 
      { 
      __python_sync
os.environ["webdriver.chrome.driver"] = exe_path
opt = webdriver.ChromeOptions()
__end_python  
        if (proxi)
        {
        __python_sync #Подключаем прокси__end_python  
        sendgetpython("PROXY = ^""+prx+":"+por+"^"");
        sendgetpython("opt.add_argument(^'--proxy-server=%s^' % PROXY)");
        }
      sendgetpython("# указываем параметры браузера");
      if (extension)sendgetpython("opt.add_extension(^'"+extension_path+"^')");
      sendgetpython("opt.add_argument(^"--headless^")");
      sendgetpython("#Запускаем браузер");
      Throme=sendgetpython("web = webdriver.Chrome(exe_path, options=opt)");
        if (regexsearch(1, #Throme, Throme, "(?<=Current browser version is )(.*)+(?= with)"))
        {
          if (messageboxyn("Для Вашего браузера необходимо установить версию^r^n^r^n"+Throme+"^r^n^r^nChromeDriver в каталог^r^n^r^n...Kibor\python\webdriver.^r^n^r^nОткрыть страницу загрузки драйвера ChromeDriver?")==1)
          {
          ShellExecuteA(0, "Open", "https:/^/chromedriver.chromium.org/downloads", 0, "", 61728);
          }
        }
      sendgetpython("web.set_window_size(ex, ey)");
      }     
      else   
      {   
      sendgetpython("os.environ[^"webdriver.chrome.driver^"] = exe_path");
        if (proxi)
        {
        __python_sync #Подключаем прокси__end_python  
        sendgetpython("opt = webdriver.ChromeOptions()");
        sendgetpython("PROXY = ^""+prx+":"+por+"^"");
        sendgetpython("opt.add_argument(^'--proxy-server=%s^' % PROXY)");
        if (extension)sendgetpython("opt.add_extension(^'"+extension_path+"^')");
        sendgetpython("#Запускаем браузер");
        Throme=sendgetpython("web = webdriver.Chrome(exe_path, options=opt)");
          if (regexsearch(1, #Throme, Throme, "(?<=Current browser version is )(.*)+(?= with)"))
          {
            if (messageboxyn("Для Вашего браузера необходимо установить версию^r^n^r^n"+Throme+"^r^n^r^nChromeDriver в каталог^r^n^r^n...Kibor\python\webdriver.^r^n^r^nОткрыть страницу загрузки драйвера ChromeDriver?")==1)
            {
            ShellExecuteA(0, "Open", "https:/^/chromedriver.chromium.org/downloads", 0, "", 61728);
            }
          }
        sendgetpython("web.set_window_size(ex, ey)");        
        }    
        else
        {
          if (extension)
          {
          sendgetpython("opt = webdriver.ChromeOptions()");
          sendgetpython("opt.add_extension(^'"+extension_path+"^')");
          
          sendgetpython("#Запускаем браузер");
          Throme=sendgetpython("web = webdriver.Chrome(exe_path, options=opt)");
          }
          else
          {
          sendgetpython("#Запускаем браузер");
          Throme=sendgetpython("web = webdriver.Chrome(exe_path)");          
          }
          if (regexsearch(1, #Throme, Throme, "(?<=Current browser version is )(.*)+(?= with)"))
          {
            if (messageboxyn("Для Вашего браузера необходимо установить версию^r^n^r^n"+Throme+"^r^n^r^nChromeDriver в каталог^r^n^r^n...Kibor\python\webdriver.^r^n^r^nОткрыть страницу загрузки драйвера ChromeDriver?")==1)
            {
            ShellExecuteA(0, "Open", "https:/^/chromedriver.chromium.org/downloads", 0, "", 61728);
            }
          }        
        sendgetpython("web.set_window_size(ex, ey)");
        }
      }
    }
    if (regexsearch(1, #t, path_driver, "geckodriver.exe", IGNORECASE))
    {
    sendgetpython("binary = r^'"+path_browser+"^'");  
      if (mode=="Фоновый режим") 
      {     
      __python_sync
# указываем параметры браузера
option = Options()
option.headless = True
__end_python    
        if (proxi)
        {
        sendgetpython("ip=^""+prx+"^"");
        sendgetpython("port="+por);
        if (profile) sendgetpython("profile = webdriver.FirefoxProfile(^'"+profile_path+"^')");
        else sendgetpython("profile = webdriver.FirefoxProfile()");
        __python_sync
#Подключаем прокси
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", ip)
profile.set_preference("network.proxy.http_port", port)
profile.set_preference("network.proxy.ssl", ip)
profile.set_preference("network.proxy.ssl_port", port)
profile.update_preferences()
#Запускаем браузер
web = webdriver.Firefox(options=option, executable_path = exe_path, firefox_binary = binary, firefox_profile=profile)
web.set_window_size(ex, ey)
__end_python  
        }
        else
        {
          if (profile)
          {
          sendgetpython("profile = webdriver.FirefoxProfile(^'"+profile_path+"^')");
          __python_sync
profile.update_preferences()
#Запускаем браузер
web = webdriver.Firefox(options=option, executable_path = exe_path, firefox_binary = binary, firefox_profile=profile)
web.set_window_size(ex, ey)
__end_python  
          }
          else
          {
          __python_sync
#Запускаем браузер
web = webdriver.Firefox(options=option, executable_path = exe_path, firefox_binary = binary)
web.set_window_size(ex, ey)
__end_python   
          } 
        }
      }    
      else   
      {    
        if (proxi)
        {
        sendgetpython("ip=^""+prx+"^"");
        sendgetpython("port="+por);
        if (profile) sendgetpython("profile = webdriver.FirefoxProfile(^'"+profile_path+"^')");
        else sendgetpython("profile = webdriver.FirefoxProfile()");
        __python_sync
#Подключаем прокси
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", ip)
profile.set_preference("network.proxy.http_port", port)
profile.set_preference("network.proxy.ssl", ip)
profile.set_preference("network.proxy.ssl_port", port)
profile.update_preferences()
#Запускаем браузер
web = webdriver.Firefox(executable_path = exe_path, firefox_binary = binary, firefox_profile=profile)
web.set_window_size(ex, ey)
__end_python  
        }
        else
        {
          if (profile)
          {
          sendgetpython("profile = webdriver.FirefoxProfile(^'"+profile_path+"^')");
          __python_sync
profile.update_preferences()
#Запускаем браузер
web = webdriver.Firefox(executable_path = exe_path, firefox_binary = binary, firefox_profile=profile)
web.set_window_size(ex, ey)
__end_python  
          }
          else
          {
          __python_sync
#Запускаем браузер
web = webdriver.Firefox(executable_path = exe_path, firefox_binary = binary)
web.set_window_size(ex, ey)
__end_python  
          } 
        }
      } 
    }
  }
}
[END]

[CALL]
(PROXI, PRXPOR, BR, Path_Browser, Path_Driver, Mode, eX, eY, Extension, Extension_Path, Profile, Profile_Path)
[END]