@@ -44,39 +44,65 @@ def __init__ (self):
4444 self .options .add_argument ('--disable-extensions' )
4545
4646 self .webDriver = selenium .webdriver .Chrome (chrome_options = self .options )
47- self .browserIsRunning = False
47+ self .nrOfTabs = 0
4848
49- def open (self , url ):
49+ def waitForNewTab (self ):
50+ while len (self .webDriver .window_handles ) <= self .nrOfTabs :
51+ time .sleep (0.5 )
52+ self .nrOfTabs = len (self .webDriver .window_handles )
53+
54+
55+ def open (self , url , run ):
5056 print (f'Browser controller is opening URL: { url } ' )
5157
52- if self .browserIsRunning :
53-
54- if commandArgs .unattended :
58+ try :
59+ if self .nrOfTabs > 0 :
5560
56- # ---- Show in existing tab
61+ if commandArgs . unattended :
5762
58- self .webDriver .execute_script (f'window.location.href = "{ url } ";' )
63+ # ---- Show in existing tab
64+
65+ self .webDriver .execute_script (f'window.location.href = "{ url } ";' )
66+ else :
67+
68+ # ---- Open new tab
69+
70+ self .webDriver .execute_script (f'window.open ("{ url } ","_blank");' ) # !!! Avoid redundant open command
71+ self .waitForNewTab ()
72+ self .webDriver .switch_to .window (self .webDriver .window_handles [- 1 ])
5973 else :
6074
61- # ---- Open new tab
75+ # ---- Open browser and default tab
6276
63- self .webDriver .execute_script (f'window.open ("{ url } ","_blank");' )
64- else :
65-
66- # ---- Open browser and default tab
67-
68- self .webDriver .get (url )
69- self .browserIsRunning = True
77+ self .webDriver .get (url )
78+ self .waitForNewTab ()
79+ except :
80+ self .webDriver .switch_to .alert .accept ();
7081
71- try :
72- self .message = self .webDriver .find_element_by_id ('message' )
82+ if run :
83+ while (True ):
84+ self .message = self .webDriver .find_element_by_id ('message' )
85+ if 'failed' in self .message .text or 'succeeded' in self .message .text :
86+ break
87+ time .sleep (0.5 )
88+
89+ print ()
90+ print ('=========================================================================' )
7391 print (f'Back to back autotest, result: { self .message .text .upper ()} ' )
92+ print ('=========================================================================' )
93+ print ()
94+
7495 if 'succeeded' in self .message .text :
7596 return True
7697 else :
7798 return False
78- except :
99+ else :
100+ print ()
101+ print ('=========================================================================' )
79102 print ('No back to back autotest' )
103+ print ('=========================================================================' )
104+ print ()
105+
80106 return True
81107
82108browserController = BrowserController ()
@@ -173,7 +199,7 @@ def test (relSourcePrepath, run, extraSwitches, messagePrename = '', nodeJs = Fa
173199 else :
174200 url = f'{ pythonHttpServerUrl } /{ relSourcePrepath } .html'
175201
176- success = browserController .open (url )
202+ success = browserController .open (url , run )
177203
178204 if commandArgs .unattended and not success :
179205 relSourcePrepathsOfErrors .append (relSourcePrepath )
0 commit comments