11import argparse
22from selenium import webdriver
3+ from selenium .webdriver .chrome .options import Options as ChromeOptions
4+ from selenium .webdriver .firefox .options import Options as FirefoxOptions
35from selenium .webdriver .support .ui import WebDriverWait
46from selenium .webdriver .support import expected_conditions as EC
57from selenium .webdriver .common .action_chains import ActionChains
68from selenium .webdriver .common .by import By
79from selenium .webdriver .common .keys import Keys
810import time
9-
11+ import subprocess
1012
1113def main ():
1214 parser = argparse .ArgumentParser (description = "Run Selenium with a chosen driver" )
@@ -24,10 +26,15 @@ def main():
2426 # This will start the right driver depending on what
2527 # driver option is chosen
2628 if args .driver == "chrome" :
27- driver = webdriver .Chrome ()
29+ options = ChromeOptions ()
30+ options .add_argument ("--headless" )
31+ options .add_argument ("--no-sandbox" )
32+ driver = webdriver .Chrome (options = options )
2833
2934 elif args .driver == "firefox" :
30- driver = webdriver .Firefox ()
35+ options = FirefoxOptions ()
36+ options .add_argument ("--headless" )
37+ driver = webdriver .Firefox (options = options )
3138
3239 elif args .driver == "safari" :
3340 driver = webdriver .Safari ()
@@ -63,7 +70,7 @@ def main():
6370 )
6471 )
6572 actions .move_to_element (run_all_menu ).click ().perform ()
66- time .sleep (100 )
73+ time .sleep (300 )
6774
6875 elif args .driver == "firefox" :
6976 print ("Opening Run Menu" )
@@ -79,7 +86,7 @@ def main():
7986 )
8087 )
8188 actions .move_to_element (run_all_menu ).click ().perform ()
82- time .sleep (100 )
89+ time .sleep (200 )
8390
8491 elif args .driver == "safari" :
8592 print ("Running all cells using Shift+Enter..." )
@@ -102,7 +109,7 @@ def main():
102109 notebook_area .send_keys (Keys .SHIFT , Keys .ENTER )
103110 time .sleep (0.5 )
104111
105- time .sleep (145 )
112+ time .sleep (600 )
106113
107114 if args .driver == "chrome" or args .driver == "firefox" :
108115 print ("Saving notebook" )
@@ -161,8 +168,13 @@ def main():
161168 return deepQuerySelector(document, "jp-button[data-command='docmanager:download']");
162169 """
163170
164- download_button = driver .execute_script (search_script )
171+ download_button = WebDriverWait (driver , 20 ).until (
172+ lambda d : d .execute_script (search_script )
173+ )
174+
175+ print ("Found element:" , download_button )
165176
177+ time .sleep (20 )
166178 driver .execute_script (
167179 """
168180 const el = arguments[0];
@@ -182,7 +194,8 @@ def main():
182194 """ ,
183195 download_button ,
184196 )
185- time .sleep (2 )
197+
198+ time .sleep (20 )
186199
187200 # Close browser
188201 driver .quit ()
0 commit comments