1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
U
\±dé#ã@svddlZddlmZddlmZddlmZddlmZddl    m
Z
dd    „Z Gd
d „d ƒZ Gd d „d ƒZ e e ¡dS)éN)ÚWebDriverException)ÚBy)Ú    WebDriver)Ú
WebElementé)ÚAbstractEventListenercsBt|tƒr|St|tƒr"t|ˆƒSt|tƒr>‡fdd„|DƒS|S)Ncsg|]}t|ˆƒ‘qS©)Ú_wrap_elements©Ú.0Úitem©Ú    ef_driverrúhd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\selenium/webdriver/support/event_firing_webdriver.pyÚ
<listcomp>"sz"_wrap_elements.<locals>.<listcomp>)Ú
isinstanceÚEventFiringWebElementrÚlist)Úresultrrr rr    s
 
 
 
r    c@s
eZdZdZeeddœdd„Zeedœdd„ƒZe    dd    œd
d „Z
ddœd d „Z ddœdd„Z dd„Z dd„Zddœdd„Zddœdd„Zejdfedœdd„Zejdfejedœdd„Ze    ejejdfe    ejejdfdœdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„ZdS)(ÚEventFiringWebDriverzRA wrapper around an arbitrary WebDriver instance which supports firing
    events.N)ÚdriverÚevent_listenerÚreturncCs>t|tƒstdƒ‚t|tƒs$tdƒ‚||_|j|j_||_dS)a]Creates a new instance of the EventFiringWebDriver.
 
        :Args:
         - driver : A WebDriver instance
         - event_listener : Instance of a class that subclasses AbstractEventListener and implements it fully or partially
 
        Example:
 
        ::
 
            from selenium.webdriver import Firefox
            from selenium.webdriver.support.events import EventFiringWebDriver, AbstractEventListener
 
            class MyListener(AbstractEventListener):
                def before_navigate_to(self, url, driver):
                    print("Before navigate to %s" % url)
                def after_navigate_to(self, url, driver):
                    print("After navigate to %s" % url)
 
            driver = Firefox()
            ef_driver = EventFiringWebDriver(driver, MyListener())
            ef_driver.get("http://www.google.co.in/")
        z%A WebDriver instance must be suppliedz:Event listener must be a subclass of AbstractEventListenerN)rrrrÚ_driverÚ _wrap_valueÚ    _listener)ÚselfrrrrrÚ__init__*s
 
 
zEventFiringWebDriver.__init__©rcCs|jS)zMReturns the WebDriver instance wrapped by this
        EventsFiringWebDriver.)r©rrrrÚwrapped_driverJsz#EventFiringWebDriver.wrapped_driver)ÚurlrcCs| d||jfd|f¡dS)NZ navigate_toÚget©Ú    _dispatchr)rr!rrrr"PszEventFiringWebDriver.getcCs| d|jfdd¡dS)NZ navigate_backÚbackrr#rrrrr%SszEventFiringWebDriver.backcCs| d|jfdd¡dS)NZnavigate_forwardÚforwardrr#rrrrr&VszEventFiringWebDriver.forwardcGs&|f| |¡}| d||jfd|¡S)NÚexecute_script©Ú_unwrap_element_argsr$r©rÚscriptÚargsZunwrapped_argsrrrr'Ysz#EventFiringWebDriver.execute_scriptcGs&|f| |¡}| d||jfd|¡S)Nr'Úexecute_async_scriptr(r*rrrr-]sz)EventFiringWebDriver.execute_async_scriptcCs| d|jfdd¡dS)NÚcloserr#rrrrr.aszEventFiringWebDriver.closecCs| d|jfdd¡dS)NÚquitrr#rrrrr/dszEventFiringWebDriver.quitcCs| d|||jfd||f¡S©NÚfindÚ find_elementr#©rZbyÚvaluerrrr2gsz!EventFiringWebDriver.find_elementcCs| d|||jfd||f¡S©Nr1Ú find_elementsr#r3rrrr6jsz"EventFiringWebDriver.find_elements.)Úl_callÚl_argsÚd_callÚd_argsc
Cs€t|jd|›ƒ|Žzt|j|ƒ|Ž}Wn4tk
r^}z|j ||j¡‚W5d}~XYnXt|jd|›ƒ|Žt||ƒS©NZbefore_Zafter_)ÚgetattrrrÚ    ExceptionÚ on_exceptionr    ©rr7r8r9r:rÚexcrrrr$mszEventFiringWebDriver._dispatchcsPt|tƒr|jSt|tƒr0t‡fdd„|DƒƒSt|tƒrL‡fdd„|DƒS|S)Nc3s|]}ˆ |¡VqdS©N©r)r
rrrÚ    <genexpr>}sz<EventFiringWebDriver._unwrap_element_args.<locals>.<genexpr>csg|]}ˆ |¡‘qSrrBr
rrrrsz=EventFiringWebDriver._unwrap_element_args.<locals>.<listcomp>)rrÚwrapped_elementÚtupler)rr,rrrr)ys
 
 
z)EventFiringWebDriver._unwrap_element_argscCs(t|tƒrt |j|j¡St |j|¡SrA)rrrrrrD©rr4rrrr‚s
z EventFiringWebDriver._wrap_valuec
Cst| d¡st|j|ƒs&t |||¡nJzt |j||¡Wn4tk
rn}z|j ||j¡‚W5d}~XYnXdS©NÚ_)Ú
startswithÚhasattrrÚobjectÚ __setattr__r=rr>©rr r4r@rrrrL‡sz EventFiringWebDriver.__setattr__c
sf‡‡fdd„}ztˆj|ƒ‰tˆƒr(|nˆWStk
r`}zˆj |ˆj¡‚W5d}~XYnXdS)Nc
sPzˆ||Ž}t|ˆƒWStk
rJ}zˆj |ˆj¡‚W5d}~XYnXdSrA)r    r=rr>r©r,Úkwargsrr@©ÚattribrrrÚ_wrap’s 
 z/EventFiringWebDriver.__getattr__.<locals>._wrap)r<rÚcallabler=rr>©rÚnamerRr@rrPrÚ __getattr__‘s z EventFiringWebDriver.__getattr__)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrrÚpropertyr Ústrr"r%r&r'r-r.r/rÚIDrr2ÚtypingÚListr6ÚTupleÚAnyr$r)rrLrVrrrrr&s, ÿ     
rc@s¨eZdZdZeeddœdd„Zeedœdd„ƒZddœd    d
„Z    ddœd d „Z
ddœd d„Z e j dfedœdd„Ze j dfejedœdd„Zdd„Zdd„Zdd„ZdS)rzBA wrapper around WebElement instance which supports firing events.N)Ú
webelementrrcCs ||_||_|j|_|j|_dS)z4Creates a new instance of the EventFiringWebElement.N)Ú _webelementÚ
_ef_driverr rr)rrbrrrrr¥szEventFiringWebElement.__init__rcCs|jS)zNReturns the WebElement wrapped by this EventFiringWebElement
        instance.)rcrrrrrD¬sz%EventFiringWebElement.wrapped_elementcCs| d|j|jfdd¡dS)NÚclickr©r$rcrrrrrre²szEventFiringWebElement.clickcCs| d|j|jfdd¡dS)NÚchange_value_ofÚclearrrfrrrrrhµszEventFiringWebElement.clearcGs| d|j|jfd|¡dS)NrgÚ    send_keysrfrFrrrri¸szEventFiringWebElement.send_keyscCs| d|||jfd||f¡Sr0r#r3rrrr2»sz"EventFiringWebElement.find_elementcCs| d|||jfd||f¡Sr5r#r3rrrr6¾sz#EventFiringWebElement.find_elementsc
Cs‚t|jd|›ƒ|Žzt|j|ƒ|Ž}Wn4tk
r^}z|j ||j¡‚W5d}~XYnXt|jd|›ƒ|Žt||jƒSr;)r<rrcr=r>rr    rdr?rrrr$ÁszEventFiringWebElement._dispatchc
Cst| d¡st|j|ƒs&t |||¡nJzt |j||¡Wn4tk
rn}z|j ||j¡‚W5d}~XYnXdSrG)    rIrJrcrKrLr=rr>rrMrrrrLËsz!EventFiringWebElement.__setattr__c
sf‡‡fdd„}ztˆj|ƒ‰tˆƒr(|nˆWStk
r`}zˆj |ˆj¡‚W5d}~XYnXdS)Nc
sRzˆ||Ž}t|ˆjƒWStk
rL}zˆj |ˆj¡‚W5d}~XYnXdSrA)r    rdr=rr>rrNrPrrrRÖs 
z0EventFiringWebElement.__getattr__.<locals>._wrap)r<rcrSr=rr>rrTrrPrrVÕs z!EventFiringWebElement.__getattr__)rWrXrYrZrrrr[rDrerhrirr]r2r^r_r6r$rLrVrrrrr¢s
 
r)r^Zselenium.common.exceptionsrZselenium.webdriver.common.byrZ#selenium.webdriver.remote.webdriverrZ$selenium.webdriver.remote.webelementrZabstract_event_listenerrr    rrÚregisterrrrrÚ<module>s      |E