a
    7ñ»j:E  ã                   @   s@   d Z ddlZddlZddlZddd„Zdd„ Zedkr<eƒ  dS )	a  
Creates a new SeleniumBase test file with boilerplate code.

Usage:
    seleniumbase mkfile [FILE.py] [OPTIONS]
    or     sbase mkfile [FILE.py] [OPTIONS]

Example:
    sbase mkfile new_test.py

Options:
    --uc  (UC Mode boilerplate using SB context manager)
    -b / --basic  (Basic boilerplate / single-line test)
    -r / --rec  (Adds Pdb+ breakpoint for Recorder Mode)
    --url=URL  (Makes the test start on a specific page)

Language Options:
    --en / --English    |    --zh / --Chinese
    --nl / --Dutch      |    --fr / --French
    --it / --Italian    |    --ja / --Japanese
    --ko / --Korean     |    --pt / --Portuguese
    --ru / --Russian    |    --es / --Spanish

Syntax Formats:
    --bc / --basecase       (BaseCase class inheritance)
    --pf / --pytest-fixture          (sb pytest fixture)
    --cf / --class-fixture   (class + sb pytest fixture)
    --cm / --context-manager        (SB context manager)
    --dc / --driver-context      (DriverContext manager)
    --dm / --driver-manager             (Driver manager)

Output:
    Creates a new SBase test file with boilerplate code.
    If the file already exists, an error is raised.
    By default, uses English with BaseCase inheritance,
    and creates a boilerplate with common SeleniumBase
    methods: "open", "type", "click", "assert_element",
    and "assert_text". If using the basic boilerplate
    option, only the "open" method is included. Only the
    BaseCase format supports Languages or Recorder Mode.
    UC Mode automatically uses English with SB() format.
é    Nc                 C   sT  d}|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d	7 }|d
7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d7 }|d 7 }|d!7 }|d"7 }| �s t d#| ƒ‚n0| d$k�r@td%| ƒ t ¡  nt d&|| f ƒ‚d S )'Nz  ** mkfile **

z	  Usage:
z-     seleniumbase mkfile [FILE.py] [OPTIONS]
z-     OR     sbase mkfile [FILE.py] [OPTIONS]
z  Example:
z     sbase mkfile new_test.py
z  Options:
z:     --uc  (UC Mode boilerplate using SB context manager)
z:     -b / --basic  (Basic boilerplate / single-line test)
z:     -r / --rec  (Adds Pdb+ breakpoint for Recorder Mode)
z:     --url=URL  (Makes the test start on a specific page)
z  Language Options:
z/     --en / --English    |    --zh / --Chinese
z.     --nl / --Dutch      |    --fr / --French
z0     --it / --Italian    |    --ja / --Japanese
z2     --ko / --Korean     |    --pt / --Portuguese
z/     --ru / --Russian    |    --es / --Spanish
z  Syntax Formats:
z:     --bc / --basecase       (BaseCase class inheritance)
z:     --pf / --pytest-fixture          (sb pytest fixture)
z:     --cf / --class-fixture   (class + sb pytest fixture)
z:     --cm / --context-manager        (SB context manager)
z:     --dc / --driver-context      (DriverContext manager)
z:     --dm / --driver-manager             (Driver manager)
z
  Output:
z:     Creates a new SBase test file with boilerplate code.
z5     If the file already exists, an error is raised.
z9     By default, uses English with BaseCase inheritance,
z8     and creates a boilerplate with common SeleniumBase
z9     methods: "open", "type", "click", "assert_element",
z7     and "assert_text". If using the basic boilerplate
z:     option, only the "open" method is included. Only the
z:     BaseCase format supports Languages or Recorder Mode.
z:     UC Mode automatically uses English with SB() format.
zINVALID RUN COMMAND!

%sÚhelpz
%szINVALID RUN COMMAND!

%s
%s
)Ú	ExceptionÚprintÚsysÚexit)ÚmsgÚexp© r	   úLE:\soccer\ml_env\Lib\site-packages\seleniumbase/console_scripts/sb_mkfile.pyÚinvalid_run_command0   sP    

r   c            2      C   sÄ  d} d}d}d}dt jvrRtjjtjj } tjjtjj }tjj	tjj
 }tjj}d}d}d}d}d }d }	d }
d}d}t jdd … }|d }|dksœ|d	kr¦td
ƒ n€| d¡s¶d}npd|v sÎtt|ƒƒdk rÔd}nR| d¡räd}nBdt|ƒv sþdt|ƒv �rd}n"tj t ¡ d | ¡�r&d| }|�rD|d | | }t|ƒ t|ƒdk�r”|dd … }|D �].}| ¡ }|dk�s„|d	k�rŒd}�qb| d¡�rút|ƒdk�rúddlm} | d¡d }	| |	¡�sò| d|	 ¡�ræd|	 }	ntd|	 ƒ‚d}�qb|dk�s|dk�rd}�qb|d k�s*|d!k�r2d}�qb|d"k�sF|d#k�rNd}�qb|�r\�qb�qb|d$k�sp|d%k�rxd}�qb|d&k�sŒ|d'k�r”d(}�qb|d)k�s¨|d*k�r°d+}�qb|d,k�sÄ|d-k�rÌd.}�qb|d/k�sà|d0k�rèd1}�qb|d2k�sü|d3k�rd4}�qb|d5k�s|d6k�r d7}�qb|d8k�s4|d9k�r<d:}�qb|d;k�sP|d<k�rXd=}�qb|d>k�sl|d?k�rtd@}�qb|dAk�sˆ|dBk�r�d}�qb|dCk�s¤|dDk�rªdE}næ|dFk�s¾|dGk�rÄdH}nÌ|dIk�sØ|dJk�rÞdK}n²|dLk�sò|dMk�rødN}n˜|dOk�s|dPk�rdQ}n~|dRk�r.d}d}dK}d}nbdS| }
|
 dTdU| dV ¡}
|
 dWdV| dX ¡}
|
 dU|dU | ¡}
|
 dX|dX | ¡}
d} �q”�qb|�r¢t|
ƒ t ¡ }dY||f }dZ}d[}d\}d]}d^}d_}|d(k�ræd`}da}db}n¾|d+k�rþdc}dd}de}n¦|d.k�rdf}dg}dh}nŽ|d1k�r.di}dj}dk}nv|d4k�rFdl}dm}dn}n^|d7k�r^do}dp}dq}nF|d:k�rvdr}ds}dt}n.|d=k�rŽdu}dv}dw}n|d@k�r¤dx}dy}dz}d}|	�r´|	}n(|�rÀd{}n|d|v�rÔd}| }nd~| }d}d€}d}|dk�rdd�lm} |  |¡}| !|¡}d‚||f }g } |  "dƒ| ¡ |�s@|  "|¡ |  "d¡ |  "d¡ |  "dƒ| ¡ |  "d„¡ |�s‚|  "d…| ¡ n|  "d†¡ |  "d‡¡ |�sÞ|�sÞ|  "dˆ| ¡ |  "d‰| ¡ |  "dŠ| ¡ |  "d‹||f ¡ |  "d¡ g }!|dk�r|dk�r| }!�n(|dk�rt|dEk�rtg } |  "dŒ¡ |  "d�¡ |�sb|  "dŽ¡ |  "d�¡ |  "d�¡ |  "d‘¡ |  "d¡ | }!�n¼|dk�rî|dHk�rîg } |  "d’| ¡ |  "d“¡ |  "d”¡ |�sÜ|  "d•¡ |  "d–¡ |  "d—¡ |  "d˜¡ |  "d¡ | }!�nB|dk�rÂ|dKk�rÂg } |  "d™¡ |  "d¡ |�r,|  "dš¡ n
|  "d›¡ |�r`|  "dœ| ¡ |  "d�¡ |  "dž¡ n|  "dŸ| ¡ |�s°|  "dŽ¡ |  "d�¡ |  "d ¡ |  "d‘¡ |  "d¡¡ |  "d¢¡ |  "d¡ | }!�nn|dk�	rZ|dNk�	rZg } |  "d£¡ |  "d¡ |  "d¤¡ |  "d¥| ¡ |�	sH|  "d¦¡ |  "d§¡ |  "d¨¡ |  "d©¡ |  "dª¡ |  "d«¡ |  "d¡ | }!�nÖ|dk�
r|dQk�
rg } |  "d¬¡ |  "d¡ |  "d­¡ |  "d®¡ |  "d¥| ¡ |�	sê|  "d¦¡ |  "d§¡ |  "d¨¡ |  "d©¡ |  "dª¡ |  "d«¡ |  "d¯¡ |  "d°¡ |  "d¡ | }!�n dd±lm#}" dd²lm$}# |"j%}$|#j&}%|%| }&|%d }'| D ]æ}(d})|( 'd³¡}*|$ (¡ D ]j}+d³|$|+ |'  d´ },|,|(v �
rbd³|$|+ |&  d´ }-|( |,|-¡}.d})|*d8 }*|*dk�
rÂ �
qÎn|.}(�
qb�
qb||(v �
rðdµ| }/|( ||/¡}.d})|)�r"|. d¶¡�r|.dtd¶ƒ … }.|! "|.¡ �
qH|! "|(¡ �
qH|!} t)|d·d¸d¹�}0|0 *dº +| ¡¡ |0 ,¡  dV|v�rtt -d»| ¡ n(d¼|v�rŽt -d½| ¡ nt -d¾| ¡ d¿|  dÀ | dÁ | d¿ }1t.|1ƒ d S )ÂNÚ ÚlinuxFZBaseCaseÚEnglishé   r   z-hz--helpr   z.pyzFile name must end with ".py"!Ú*é   zInvalid file name!ú-z File name cannot start with "-"!ú/ú\z.File must be created in the current directory!z+File "%s" already exists in this directory!zERROR: é   Tz--url=é   )Ú
page_utilszhttps://zInvalid URL: %sz-bz--basicz-rz--recz--recordz
--recorderz--enz	--englishz--zhz	--chineseZChinesez--nlz--dutchÚDutchz--frz--frenchÚFrenchz--itz	--italianÚItalianz--jaz
--japaneseZJapanesez--koz--koreanZKoreanz--ptz--portugueseZ
Portuguesez--ruz	--russianZRussianz--esz	--spanishZSpanishz--bcz
--basecasez--pfz--pytest-fixtureZPytestFixturez--cfz--class-fixtureZClassFixturez--cmz--context-managerÚContextManagerz--dcz--driver-contextZDriverContextz--dmz--driver-managerZDriverManagerz--ucz
===> INVALID OPTION: >> %s <<
z>> z>>ú z <<z<<z%s/%sÚbodyzhtml body > pÚpZHelloZGoodbyeZMyTestClassu   ä½ å¥½u   å†�è§�u   æˆ‘çš„æµ‹è¯•ç±»ZHalloZDagZMijnTestklasseZBonjourz	Au revoirZMaClasseDeTestZCiaoZAddioZMiaClasseDiTestu   ã�“ã‚“ã�«ã�¡ã�¯u   ã�•ã‚ˆã�†ã�ªã‚‰u   ç§�ã�®ãƒ†ã‚¹ãƒˆã‚¯ãƒ©ã‚¹u   ì—¬ë³´ì„¸ìš”u   ì•ˆë…•u   í…ŒìŠ¤íŠ¸_í�´ëž˜ìŠ¤u   OlÃ¡ZTchauZMinhaClasseDeTesteu   ÐŸÑ€Ð¸Ð²ÐµÑ‚u   Ð”Ð¾ Ñ�Ð²Ð¸Ð´Ð°Ð½Ð¸Ñ�u    ÐœÐ¾Ð¹Ð¢ÐµÑ�Ñ‚Ð¾Ð²Ñ‹Ð¹ÐšÐ»Ð°Ñ�Ñ�ZHolau   AdiÃ³sZMiClaseDePruebazabout:blank)r   r   r   r   z5data:text/html,<meta charset='utf-8'><p>%s<br><input>zdata:text/html,<p>%s<br><input>z!from seleniumbase import BaseCasez!BaseCase.main(__name__, __file__))ÚMD_Fzclass %s(%s):z%sz    def test_base(self):z        self.open("%s")z/        if self.recorder_ext and not self.xvfb:z            breakpoint()z2        self.type("input", "%s")  # selector, textz$        self.click("%s")  # selectorz-        self.assert_element("%s")  # selectorz6        self.assert_text("%s", "%s")  # text, selectorzdef test_base(sb):z1    sb.open("data:text/html,<p>Hello<br><input>")z1    sb.type("input", "Goodbye")  # selector, textz)    sb.click("html body > p")  # selectorz)    sb.assert_element("body")  # selectorz2    sb.assert_text("Hello", "p")  # text, selectorz	class %s:z    def test_base(self, sb):z5        sb.open("data:text/html,<p>Hello<br><input>")z5        sb.type("input", "Goodbye")  # selector, textz-        sb.click("html body > p")  # selectorz-        sb.assert_element("body")  # selectorz6        sb.assert_text("Hello", "p")  # text, selectorzfrom seleniumbase import SBzwith SB(uc=True) as sb:z with SB(browser="chrome") as sb:z    url = "%s"z%    sb.uc_open_with_reconnect(url, 4)z    sb.uc_gui_click_captcha()z    sb.open("%s")z*    sb.assert_element("input")  # selectorz!    sb.highlight("p")  # selectorz    sb.sleep(0.5)  # secondsz&from seleniumbase import DriverContextz/with DriverContext(browser="chrome") as driver:z    driver.get("%s")z0    driver.type("input", "Goodbye")  # sel, textz-    driver.click("html body > p")  # selectorz.    driver.assert_element("input")  # selectorz1    driver.assert_text("Hello", "p")  # text, selz%    driver.highlight("p")  # selectorz     driver.sleep(0.5)  # secondszfrom seleniumbase import Driverz!driver = Driver(browser="chrome")ztry:zfinally:z    driver.quit())ÚMD)Ú
MD_L_Codeszself.ú(z%s.main(__name__, __file__)z  # noqazw+zutf-8)ÚmodeÚencodingz
zsbase print %s -nú"zsbase print "%s" -nzsbase print '%s' -nÚ
z* Test file: "z" was created! *)/r   ÚplatformÚcoloramaZForeZBLUEZBackZLIGHTCYAN_EXZREDZLIGHTYELLOW_EXZBLACKZMAGENTAÚStyleZ	RESET_ALLÚargvr   ÚendswithÚlenÚstrÚ
startswithÚosÚpathÚexistsÚgetcwdÚlowerZseleniumbase.fixturesr   ÚsplitZis_valid_urlr   ÚreplaceZ"seleniumbase.translate.master_dictr   Zget_import_lineZget_lang_parent_classÚappendr    r!   ÚmdÚlangÚcountÚkeysÚopenÚ
writelinesÚjoinÚcloseÚsystemr   )2Úc1Zc5Zc7ÚcrÚbasicZuse_ucZhelp_meZrecorderÚ	error_msgZ
start_pageZinvalid_cmdÚsyntaxÚlanguageÚcommand_argsÚ	file_nameÚoptionsÚoptionr   Údir_nameÚ	file_pathr   Zpara1Zpara2ZhelloZgoodbyeÚ
class_nameÚurlZimport_lineZ	main_lineZparent_classr   Z
class_lineÚdataZnew_datar    r!   r7   Z
lang_codesZnl_codeZdl_codeÚlineZ
found_swapZreplace_countÚkeyÚoriginalÚreplacementÚnew_lineZnew_mainÚfileÚsuccessr	   r	   r
   Úmain\   sz   



























ÿÿÿ









ÿ

ÿ









































ÿÿÿrV   Ú__main__)N)Ú__doc__r(   r/   r   r   rV   Ú__name__r	   r	   r	   r
   Ú<module>   s   *
,  U