44# --- BEGIN_HEADER ---
55#
66# userguidescreens - selenium-based web client to grab user guide screenshots
7- # Copyright (C) 2003-2023 The MiG Project lead by Brian Vinter
7+ # Copyright (C) 2003-2025 The MiG Project by the Science HPC Center at UCPH
88#
99# This file is part of MiG.
1010#
@@ -134,14 +134,15 @@ def management_actions(driver, url, login, passwd, callbacks):
134134 link .click ()
135135 # ajax_wait(driver, nav_name, "ui-progressbar")
136136 # NOTE: locate the relevant workzone in category ref section
137- active_tab = driver .find_element (
138- by_what ( 'id' ), 'create_project_tab' )
137+ active_tab = driver .find_element (by_what ( 'id' ),
138+ 'create_project_tab' )
139139 # NOTE: project name field is shared for all categories
140- workzone_entry = active_tab .find_element (by_what ('id' ),
141- 'create_project_%s_workzone_id' % sample_category )
140+ workzone_entry = active_tab .find_element (
141+ by_what ('id' ), 'create_project_%s_workzone_id' %
142+ sample_category )
142143 workzone_entry .send_keys (sample_workzone )
143- proj_entry = active_tab .find_element (by_what ( 'name' ),
144- 'create_project_base_vgrid_name' )
144+ proj_entry = active_tab .find_element (
145+ by_what ( 'name' ), 'create_project_base_vgrid_name' )
145146 proj_entry .send_keys (sample_project )
146147 state = '%s-filled' % nav_name .lower ().replace (' ' , '-' )
147148 if callbacks .get (state , None ):
@@ -163,22 +164,20 @@ def management_actions(driver, url, login, passwd, callbacks):
163164 # print "DEBUG: found %s link: %s" % (nav_name, link)
164165 link .click ()
165166 # ajax_wait(driver, nav_name, "ui-progressbar")
166- active_tab = driver .find_element (
167- by_what ('id' ), 'invite_user_tab' )
167+ active_tab = driver .find_element (by_what ('id' ), 'invite_user_tab' )
168168 dropdown_container = active_tab .find_element (by_what ('class_name' ),
169169 'gm_select' )
170170 proj_dropdown = navmenu .find_element (by_what ('name' ),
171171 'invite_user_base_vgrid_name' )
172172 # NOTE: we expect first real project to match sample category
173173 select_item_by_index (driver , proj_dropdown , 2 )
174174 # ajax_wait(driver, nav_name, "ui-progressbar")
175- active_tab = driver .find_element (
176- by_what ('id' ), 'invite_user_tab' )
177- terms_checkbox = active_tab .find_element (by_what ('id' ),
178- 'invite_user_%s_user_terms' % sample_category )
175+ active_tab = driver .find_element (by_what ('id' ), 'invite_user_tab' )
176+ terms_checkbox = active_tab .find_element (
177+ by_what ('id' ), 'invite_user_%s_user_terms' % sample_category )
179178 terms_checkbox .click ()
180- workzone_entry = active_tab .find_element (by_what ( 'id' ),
181- 'invite_user_%s_workzone_id' % sample_category )
179+ workzone_entry = active_tab .find_element (
180+ by_what ( 'id' ), 'invite_user_%s_workzone_id' % sample_category )
182181 # NOTE: user id field is shared for all categories
183182 invite_entry = active_tab .find_element (by_what ('name' ),
184183 'invite_user_short_id' )
@@ -211,8 +210,8 @@ def open_project_actions(driver, url, login, passwd, callbacks):
211210 # print "DEBUG: found %s link: %s" % (nav_name, link)
212211 link .click ()
213212 # ajax_wait(driver, nav_name, "ui-progressbar")
214- dropdown_container = navmenu .find_element (
215- by_what ( 'class_name' ), 'gm_select' )
213+ dropdown_container = navmenu .find_element (by_what ( 'class_name' ),
214+ 'gm_select' )
216215 proj_dropdown = navmenu .find_element (by_what ('name' ),
217216 'access_project_base_vgrid_name' )
218217 select_item_by_index (driver , proj_dropdown , 2 )
@@ -302,8 +301,7 @@ def archives_actions(driver, url, login, passwd, callbacks):
302301 name_field = driver .find_element (by_what ('name' ), "freeze_name" )
303302 name_field .send_keys (archive_name )
304303
305- meta_field = driver .find_element (
306- by_what ('name' ), "freeze_description" )
304+ meta_field = driver .find_element (by_what ('name' ), "freeze_description" )
307305 meta_field .send_keys ("""Article Data Archive
308306
309307This is my sample freeze archive with some metadata describing the archive
@@ -327,7 +325,8 @@ def archives_actions(driver, url, login, passwd, callbacks):
327325 # Select first file (at least welcome.txt is always there)
328326 files_area = driver .find_element (by_what ('class_name' ), "fm_files" )
329327 selected = False
330- for select_file in files_area .find_elements (by_what ('class_name' ), "ext_txt" ):
328+ for select_file in files_area .find_elements (by_what ('class_name' ),
329+ "ext_txt" ):
331330 try :
332331 #print("DEBUG: scroll to file elem: %s" % select_file)
333332 scroll_to_elem (driver , select_file )
@@ -347,13 +346,12 @@ def archives_actions(driver, url, login, passwd, callbacks):
347346 file_path = select_file .text
348347 #print("DEBUG: found file path: %s" % file_path)
349348 # Use parent of unique filechooser to find the right dialog among many
350- filechooser_elem = driver .find_element (
351- by_what ('id' ), "fm_filechooser" )
349+ filechooser_elem = driver .find_element (by_what ('id' ), "fm_filechooser" )
352350 filechooser_dialog = filechooser_elem .parent
353351 # print("DEBUG: found filechooser %s and parent dialog: %s" %
354352 # (filechooser_elem, filechooser_dialog))
355- close_button = filechooser_dialog .find_element (by_what ( 'class_name' ),
356- "ui-dialog-titlebar-close" )
353+ close_button = filechooser_dialog .find_element (
354+ by_what ( 'class_name' ), "ui-dialog-titlebar-close" )
357355 #print("DEBUG: found close button: %s" % close_button)
358356 close_button .click ()
359357 # dialog_buttons = filechooser_dialog.find_element(by_what('class_name'),
@@ -414,8 +412,8 @@ def archives_actions(driver, url, login, passwd, callbacks):
414412 # (confirm_elem, confirm_dialog))
415413 dialog_buttons = confirm_dialog .find_element (by_what ('class_name' ),
416414 "ui-dialog-buttonset" )
417- confirm_buttons = dialog_buttons .find_elements (
418- by_what ( 'class_name' ), "ui-button" )
415+ confirm_buttons = dialog_buttons .find_elements (by_what ( 'class_name' ),
416+ "ui-button" )
419417 for button in confirm_buttons :
420418 if do_finalize and button .text == 'Yes' :
421419 #print("DEBUG: click confirm button: %s" % button.text)
@@ -439,8 +437,7 @@ def archives_actions(driver, url, login, passwd, callbacks):
439437 print ("INFO: callback for: %s" % state )
440438 callbacks [state ](driver , state )
441439
442- view_button = driver .find_element (by_what ('class_name' ),
443- "viewarchivelink" )
440+ view_button = driver .find_element (by_what ('class_name' ), "viewarchivelink" )
444441 #print("DEBUG: click view button: %s" % view_button)
445442 view_button .click ()
446443 ajax_wait (driver , nav_name )
@@ -457,8 +454,8 @@ def archives_actions(driver, url, login, passwd, callbacks):
457454
458455 dialog_buttons = driver .find_element (by_what ('class_name' ),
459456 "ui-dialog-buttonset" )
460- confirm_buttons = driver .find_elements (
461- by_what ( 'class_name' ), "ui-button" )
457+ confirm_buttons = driver .find_elements (by_what ( 'class_name' ),
458+ "ui-button" )
462459 run_register = False
463460 for button in confirm_buttons :
464461 if button .text == 'Yes' :
@@ -470,8 +467,8 @@ def archives_actions(driver, url, login, passwd, callbacks):
470467 # Workaround if no buttons found
471468 if not confirm_buttons :
472469 print ("WARNING: failed to confirm register doi - force close dialog" )
473- close_button = confirm_dialog .find_element (by_what ( 'class_name' ),
474- "ui-dialog-titlebar-close" )
470+ close_button = confirm_dialog .find_element (
471+ by_what ( 'class_name' ), "ui-dialog-titlebar-close" )
475472 #print("DEBUG: found close button: %s" % close_button)
476473 close_button .click ()
477474
@@ -481,22 +478,21 @@ def archives_actions(driver, url, login, passwd, callbacks):
481478
482479 # Maybe need KU-IT DOI service login if requested
483480 try :
484- logon_button = driver .find_element (
485- by_what ('id' ), "cmdLogon" )
481+ logon_button = driver .find_element (by_what ('id' ), "cmdLogon" )
486482 #print("DEBUG: click logon: %s" % logon_button)
487483 logon_button .click ()
488484 except Exception as exc :
489485 pass
490486
491487 try :
492- user_field = driver .find_element (
493- by_what ( 'id' ), "userNameInput" )
488+ user_field = driver .find_element (by_what ( 'id' ),
489+ "userNameInput" )
494490 user_field .send_keys (login )
495- password_field = driver .find_element (
496- by_what ( 'id' ), "passwordInput" )
491+ password_field = driver .find_element (by_what ( 'id' ),
492+ "passwordInput" )
497493 password_field .send_keys (passwd )
498- submit_button = driver .find_element (
499- by_what ( 'id' ), "submitButton" )
494+ submit_button = driver .find_element (by_what ( 'id' ),
495+ "submitButton" )
500496 #print("DEBUG: click submit: %s" % submit_button)
501497 time .sleep (1 )
502498 submit_button .click ()
@@ -526,8 +522,8 @@ def archives_actions(driver, url, login, passwd, callbacks):
526522 if popup_dialog .is_displayed ():
527523 #print("DEBUG: found visible popup dialog")
528524 popup_found = True
529- popup_buttons = popup_dialog .find_elements (by_what ( 'class_name' ),
530- "btn" )
525+ popup_buttons = popup_dialog .find_elements (
526+ by_what ( 'class_name' ), "btn" )
531527 for button in popup_buttons :
532528 # print "DEBUG: inspect popup button: %s" % button.text
533529 if button .text .upper () == 'UNDERSTOOD' :
@@ -549,8 +545,8 @@ def archives_actions(driver, url, login, passwd, callbacks):
549545
550546 # Check if DOI form is there and ready
551547 try :
552- doi_idenfier = driver .find_element (
553- by_what ( 'id' ), "IdentifierType" )
548+ doi_idenfier = driver .find_element (by_what ( 'id' ),
549+ "IdentifierType" )
554550 # print "DEBUG: found DOI identifier: %s" % doi_idenfier
555551 break
556552 except Exception as exc :
@@ -616,8 +612,8 @@ def setup_actions(driver, url, login, passwd, callbacks):
616612 content_anchor = driver .find_element (by_what ('id' ), "content" )
617613 sub_link = content_anchor .find_element (
618614 by_what ('link_text' ), name )
619- sub_link = driver .find_element (by_what ( 'id' ),
620- "content" ).find_element (by_what ('link_text' ), name )
615+ sub_link = driver .find_element (
616+ by_what ( 'id' ), "content" ).find_element (by_what ('link_text' ), name )
621617 sub_link .click ()
622618 # Wait for Seafile server status lookup
623619 if key == 'seafile' :
@@ -653,8 +649,8 @@ def jupyter_actions(driver, url, login, passwd, callbacks):
653649 content_anchor = driver .find_element (by_what ('id' ), "content" )
654650 sub_link = content_anchor .find_element (
655651 by_what ('link_text' ), name )
656- sub_link = driver .find_element (by_what ( 'id' ),
657- "content" ).find_element (by_what ('link_text' ), name )
652+ sub_link = driver .find_element (
653+ by_what ( 'id' ), "content" ).find_element (by_what ('link_text' ), name )
658654 sub_link .click ()
659655
660656 state = 'jupyter-%s-tab-ready' % key
@@ -725,10 +721,9 @@ def peers_actions(driver, url, login, passwd, callbacks):
725721 for (key , name ) in peers_sections :
726722 # Search inside page content to avoid Peers nav menu interference
727723 content_anchor = driver .find_element (by_what ('id' ), "content" )
728- sub_link = content_anchor .find_element (
729- by_what ('link_text' ), name )
730- sub_link = driver .find_element (by_what ('id' ),
731- "content" ).find_element (by_what ('link_text' ), name )
724+ sub_link = content_anchor .find_element (by_what ('link_text' ), name )
725+ sub_link = driver .find_element (
726+ by_what ('id' ), "content" ).find_element (by_what ('link_text' ), name )
732727 sub_link .click ()
733728
734729 state = 'peers-%s-tab-ready' % key
@@ -785,15 +780,16 @@ def datatransfer_actions(driver, url, login, passwd, callbacks):
785780 dstpath_field = form_field .find_element (by_what ('name' ), "transfer_dst" )
786781 dstpath_field .send_keys ("." )
787782 protocol_dropdown = form_field .find_element (by_what ('id' ),
788- 'protocol_select' )
783+ 'protocol_select' )
789784 select_item_by_index (form_field , protocol_dropdown , 1 )
790785 # screenshot of datatransfer page filled with example to get erda frontpage
791786 state = 'datatransfer-filled'
792787 if callbacks .get (state , None ):
793788 print ("INFO: callback for: %s" % state )
794789 callbacks [state ](driver , state )
795-
796- request_button = form_field .find_element (by_what ('id' ), "submit-request-transfer" )
790+
791+ request_button = form_field .find_element (by_what ('id' ),
792+ "submit-request-transfer" )
797793 request_button .click ()
798794 # screenshot of result page for the submitted example
799795 state = 'datatransfer-requested'
@@ -803,7 +799,8 @@ def datatransfer_actions(driver, url, login, passwd, callbacks):
803799
804800 # Transfer status and output folder screenshot
805801 # Name of link is used due to a lack of find-able ID
806- status_button = driver .find_element (by_what ('link_text' ), "Transfer status and output folder" )
802+ status_button = driver .find_element (by_what ('link_text' ),
803+ "Transfer status and output folder" )
807804 status_button .click ()
808805 ajax_wait (driver , nav_name , "ui-progressbar" )
809806 state = 'datatransfer-statusfiles'
@@ -813,13 +810,15 @@ def datatransfer_actions(driver, url, login, passwd, callbacks):
813810
814811 # Go back to previous page
815812 driver .back ()
816- return_button = driver .find_element (by_what ('link_text' ), "Return to data transfers overview" )
813+ return_button = driver .find_element (by_what ('link_text' ),
814+ "Return to data transfers overview" )
817815 return_button .click ()
818816 state = 'datatransfer-overview'
819817 if callbacks .get (state , None ):
820818 print ("INFO: callback for: %s" % state )
821819 callbacks [state ](driver , state )
822820
821+
823822def sharelink_actions (driver , url , login , passwd , callbacks ):
824823 """Run user actions for section of same name"""
825824 nav_name = "Share Links"
0 commit comments