@ -3,6 +3,7 @@ from selenium import webdriver, common
from selenium . webdriver . common . by import By
import os
import sys
import json
from pyOpenRPA . Tools import CrossOS
import time
@ -14,7 +15,7 @@ UIO_WAIT_INTERVAL_SEC_FLOAT = 1.0
gBrowser : webdriver . Chrome = None
def BrowserChromeStart ( inDriverExePathStr : str = None , inChromeExePathStr : str = None , inExtensionPathList : list = None , inProfilePathStr : str = None ) - > webdriver . Chrome :
def BrowserChromeStart ( inDriverExePathStr : str = None , inChromeExePathStr : str = None , inExtensionPathList : list = None , inProfilePathStr : str = None , inSaveAsPDFBool = False , inSavefileDefaultDirStr = None ) - > webdriver . Chrome :
""" L+,W+: Выполнить запуск браузера Chrome. Если вы скачали pyOpenRPA вместе с репозиторием, то будет использоваться встроенный браузер Google Chrome. Если установка pyOpenRPA производилась другим способом, то требуется указать расположение браузера Google Chrome и соответствующего WebDriver.
. . code - block : : python
@ -32,6 +33,10 @@ def BrowserChromeStart(inDriverExePathStr:str = None, inChromeExePathStr:str = N
: type inExtensionPathList : list , опционально
: param inProfilePathStr : Путь , по которому выполнить сохранения профиля Chrome ( история , куки и т . д . ) , по умолчанию None ( профиль не сохраняется )
: type inProfilePathStr : str , опционально
: param inSaveAsPDFBool : Флаг , который обеспечивает настройки окна печати вэб - страницы как " Сохранить как PDF " , по умолчанию False ( настройки по умолчанию )
: type inSaveAsPDFBool : bool , опционально
: param inSavefileDefaultDirStr : Путь , по которому выполнить сохранения файла ( после работы с окном печать вэб - страницы браузера ) ( история , куки и т . д . ) , по умолчанию None ( файл не сохраняется )
: type inSavefileDefaultDirStr : str , опционально
: return : Объект браузера Google Chrome
: rtype : webdriver . Chrome
"""
@ -54,8 +59,31 @@ def BrowserChromeStart(inDriverExePathStr:str = None, inChromeExePathStr:str = N
if CrossOS . IS_WINDOWS_BOOL : inChromeExePathStr = os . path . join ( lResourcePathStr , " WChrome64-840414730 " , " App " , " Chrome-bin " , " chrome.exe " )
elif CrossOS . IS_LINUX_BOOL : inChromeExePathStr = os . path . join ( lResourcePathStr , " LChrome64-10305060114 " , " data " , " chrome " )
if inExtensionPathList == None : inExtensionPathList = [ ]
# Set full path to exe of the chrome
# Установка настроек окна печати, если необходимо
lWebDriverChromeOptionsInstance = webdriver . ChromeOptions ( )
if inSaveAsPDFBool == True and inSavefileDefaultDirStr is not None :
print_settings = {
" recentDestinations " : [ {
" id " : " Save as PDF " ,
" origin " : " local " ,
" account " : " " ,
} ] ,
" selectedDestinationId " : " Save as PDF " ,
" version " : 2 , # в chrome - это номер варинта "сохранить как PDF"
" isHeaderFooterEnabled " : False , # хедеры HTML на странице
" isLandscapeEnabled " : False # ориентация (True - альбомная)
}
prefs = { ' printing.print_preview_sticky_settings.appState ' : json . dumps ( print_settings ) ,
" download.prompt_for_download " : False ,
" profile.default_content_setting_values.automatic_downloads " : 1 ,
" download.default_directory " : inSavefileDefaultDirStr ,
" savefile.default_directory " : inSavefileDefaultDirStr ,
" download.directory_upgrade " : True ,
" safebrowsing.enabled " : True }
lWebDriverChromeOptionsInstance . add_experimental_option ( ' prefs ' , prefs )
lWebDriverChromeOptionsInstance . add_argument ( ' --kiosk-printing ' )
# Set full path to exe of the chrome
lWebDriverChromeOptionsInstance . binary_location = inChromeExePathStr
#lWebDriverChromeOptionsInstance2 = webdriver.ChromeOptions()
if inProfilePathStr is not None :
@ -107,6 +135,23 @@ def PageOpen(inURLStr: str):
"""
global gBrowser
if gBrowser is not None : gBrowser . get ( inURLStr )
def PagePrint ( ) :
""" L+,W+: Открыть окно печати браузера.
. . code - block : : python
# UIWeb: Взаимодействие с ui web
from pyOpenRPA . Robot import UIWeb
import time
UIWeb . BrowserChromeStart ( )
UIWeb . PageOpen ( " https://mail.ru " )
time . sleep ( 1 )
UIWeb . PagePrint ( )
UIWeb . BrowserClose ( )
"""
PageJSExecute ( inJSStr = f " window.print() " )
def PageScrollTo ( inVerticalPxInt = 0 , inHorizontalPxInt = 0 ) :
""" L+,W+: Выполнить прокрутку страницы (по вертикали или по горизонтали)