66from selenium .common import exceptions
77from selenium .webdriver .common .alert import Alert
88from selenium .webdriver .chrome .options import Options
9- from src import Elements
9+ from src . Elements import ElementClass
1010from src .state import State
1111from src .CheckDriver import compare_and_download as update_driver
1212from selenium .webdriver .chrome .service import (
@@ -57,7 +57,10 @@ def __init__(self) -> None:
5757 self .order_list = []
5858 self .state = State ()
5959 self .driver = None
60+ self .continue_program = True
6061 self .pick_delay = 1.5
62+ self .elements = ElementClass ()
63+ self .check_if_elements_exist ()
6164
6265 def read_links (self ):
6366 """Reads settings json file and returns json object
@@ -92,6 +95,18 @@ def run_driver(self, chrome_service, chrome_options, manual_flag) -> None:
9295 service = chrome_service , chrome_options = chrome_options
9396 )
9497
98+ def check_if_elements_exist (self ):
99+ if self .elements .element_error_flag :
100+ Clock .schedule_once (
101+ partial (
102+ self .test_popup ,
103+ "elements.json doesn't exist" ,
104+ "reinstall autoscanner" ,
105+ ),
106+ 1 ,
107+ )
108+ self .continue_program = False
109+
95110 def pick (self , order ):
96111 """
97112 Continually Crawls through individual picking of each item untill it detects
@@ -106,26 +121,27 @@ def pick(self, order):
106121 while True :
107122 sleep (self .pick_delay )
108123 WebDriverWait (self .driver , TIMOUT ).until (
109- EC .element_to_be_clickable (Elements .FIRSTENTRY )
124+ EC .element_to_be_clickable (self . elements .FIRSTENTRY )
110125 ).click ()
111126 sleep (self .pick_delay )
112127 WebDriverWait (self .driver , TIMOUT ).until (
113- EC .element_to_be_clickable (Elements .BINNUMBER )
128+ EC .element_to_be_clickable (self . elements .BINNUMBER )
114129 ).click ()
115130 sleep (self .pick_delay )
116131 WebDriverWait (self .driver , TIMOUT ).until (
117- EC .element_to_be_clickable (Elements .ITEMNUMBER )
132+ EC .element_to_be_clickable (self . elements .ITEMNUMBER )
118133 ).click ()
119134 sleep (self .pick_delay )
120135
121-
122- amount = self .driver .find_element (Elements .QUANTITYAMOUNT [0 ],Elements .QUANTITYAMOUNT [1 ]).text .split (" " )[0 ]
136+ amount = self .driver .find_element (
137+ self .elements .QUANTITYAMOUNT [0 ], self .elements .QUANTITYAMOUNT [1 ]
138+ ).text .split (" " )[0 ]
123139 amount += "\n "
124140 sleep (1 )
125141 WebDriverWait (self .driver , TIMOUT ).until (
126- EC .element_to_be_clickable (Elements .QUANTITYINPUT )
142+ EC .element_to_be_clickable (self . elements .QUANTITYINPUT )
127143 ).send_keys (amount )
128-
144+
129145 sleep (self .pick_delay )
130146
131147 mark = self .driver .find_element (
@@ -136,7 +152,7 @@ def pick(self, order):
136152
137153 if mark .text .lower () == "Pick Task Complete" .lower ():
138154 WebDriverWait (self .driver , TIMOUT ).until (
139- EC .element_to_be_clickable (Elements .NEXTPICKTASK )
155+ EC .element_to_be_clickable (self . elements .NEXTPICKTASK )
140156 ).click ()
141157 else :
142158 break
@@ -149,13 +165,13 @@ def pick(self, order):
149165 station = "PackStation02\n "
150166
151167 WebDriverWait (self .driver , TIMOUT ).until (
152- EC .element_to_be_clickable (Elements .STATIONINPUT )
168+ EC .element_to_be_clickable (self . elements .STATIONINPUT )
153169 ).send_keys (station )
154170
155171 sleep (3 )
156172
157173 WebDriverWait (self .driver , TIMOUT ).until (
158- EC .element_to_be_clickable (Elements .NEXTORDERBUTTON )
174+ EC .element_to_be_clickable (self . elements .NEXTORDERBUTTON )
159175 ).click ()
160176 sleep (self .pick_delay )
161177 except exceptions .NoSuchWindowException :
@@ -203,19 +219,23 @@ def scan(
203219 # but I may aswell do it this way
204220 try :
205221 WebDriverWait (self .driver , 2 ).until (
206- EC .element_to_be_clickable (Elements .ORDERINPUT )
222+ EC .element_to_be_clickable (self . elements .ORDERINPUT )
207223 ).clear ()
208224 WebDriverWait (self .driver , 2 ).until (
209- EC .element_to_be_clickable (Elements .ORDERINPUT )
225+ EC .element_to_be_clickable (self . elements .ORDERINPUT )
210226 ).send_keys (order )
211227 except exceptions .TimeoutException :
212228 # Timeout in finding the normal textbox to enter the order into
213229 try :
214230 WebDriverWait (self .driver , 2 ).until (
215- EC .element_to_be_clickable (Elements .ORDERINPUTWITHERROR )
231+ EC .element_to_be_clickable (
232+ self .elements .ORDERINPUTWITHERROR
233+ )
216234 ).clear ()
217235 WebDriverWait (self .driver , 2 ).until (
218- EC .element_to_be_clickable (Elements .ORDERINPUTWITHERROR )
236+ EC .element_to_be_clickable (
237+ self .elements .ORDERINPUTWITHERROR
238+ )
219239 ).send_keys (order )
220240 except exceptions .TimeoutException as e :
221241 # At this point there is no text box to enter into at all
@@ -232,7 +252,7 @@ def scan(
232252 continue
233253
234254 WebDriverWait (self .driver , 2 ).until (
235- EC .element_to_be_clickable (Elements .ENTERORDER )
255+ EC .element_to_be_clickable (self . elements .ENTERORDER )
236256 ).click ()
237257
238258 try :
@@ -457,10 +477,10 @@ def login_microsoft(self, login_flag, username, password, login_failed_callback)
457477 try :
458478 sleep (2 )
459479 self .driver .find_element (
460- Elements . USERNAMEFIELD [0 ], Elements .USERNAMEFIELD [1 ]
480+ self . elements . USERNAMEFIELD [0 ], self . elements .USERNAMEFIELD [1 ]
461481 ).send_keys (username )
462482 WebDriverWait (self .driver , TIMOUT ).until (
463- EC .element_to_be_clickable (Elements .NEXTBUTTON )
483+ EC .element_to_be_clickable (self . elements .NEXTBUTTON )
464484 ).click ()
465485 sleep (1 )
466486 except exceptions .NoSuchElementException :
@@ -486,11 +506,11 @@ def login_microsoft(self, login_flag, username, password, login_failed_callback)
486506 pass
487507
488508 WebDriverWait (self .driver , TIMOUT ).until (
489- EC .element_to_be_clickable (Elements .PASSWORDFIELD )
509+ EC .element_to_be_clickable (self . elements .PASSWORDFIELD )
490510 ).send_keys (password )
491511
492512 WebDriverWait (self .driver , TIMOUT ).until (
493- EC .element_to_be_clickable (Elements .NEXTBUTTON )
513+ EC .element_to_be_clickable (self . elements .NEXTBUTTON )
494514 ).click ()
495515
496516 try :
@@ -511,21 +531,21 @@ def login_microsoft(self, login_flag, username, password, login_failed_callback)
511531 pass
512532
513533 WebDriverWait (self .driver , TIMOUT ).until (
514- EC .element_to_be_clickable (Elements .NOBUTTON )
534+ EC .element_to_be_clickable (self . elements .NOBUTTON )
515535 ).click ()
516536
517537 count = 0
518538 while count < TIMOUT :
519539 try :
520540 WebDriverWait (self .driver , 1 ).until (
521- EC .element_to_be_clickable (Elements .NETSUITE_ENVIRONMENT )
541+ EC .element_to_be_clickable (self . elements .NETSUITE_ENVIRONMENT )
522542 ).click ()
523543 break
524544 except :
525545 pass
526546 try :
527547 WebDriverWait (self .driver , 1 ).until (
528- EC .element_to_be_clickable (Elements .NETSUITEHOMEPAGE )
548+ EC .element_to_be_clickable (self . elements .NETSUITEHOMEPAGE )
529549 ).click ()
530550 break
531551 except :
@@ -577,27 +597,27 @@ def get_to_orders(self, login_flag, refresh_flag=False):
577597 pass
578598 sleep (1 )
579599 WebDriverWait (self .driver , TIMOUT ).until (
580- EC .element_to_be_clickable (Elements .WMS )
600+ EC .element_to_be_clickable (self . elements .WMS )
581601 ).click ()
582602 sleep (1 )
583603 WebDriverWait (self .driver , TIMOUT ).until (
584- EC .element_to_be_clickable (Elements .WAREHOUSE )
604+ EC .element_to_be_clickable (self . elements .WAREHOUSE )
585605 ).click ()
586606 sleep (1 )
587607 WebDriverWait (self .driver , TIMOUT ).until (
588- EC .element_to_be_clickable (Elements .PICKING )
608+ EC .element_to_be_clickable (self . elements .PICKING )
589609 ).click ()
590610 sleep (1 )
591611 WebDriverWait (self .driver , TIMOUT ).until (
592- EC .element_to_be_clickable (Elements .SINGLEORDER )
612+ EC .element_to_be_clickable (self . elements .SINGLEORDER )
593613 ).click ()
594614 sleep (1 )
595615 WebDriverWait (self .driver , TIMOUT ).until (
596- EC .element_to_be_clickable (Elements .RELEASEDORDER )
616+ EC .element_to_be_clickable (self . elements .RELEASEDORDER )
597617 ).click ()
598618 sleep (1 )
599619 WebDriverWait (self .driver , TIMOUT ).until (
600- EC .element_to_be_clickable (Elements .SALESORDER )
620+ EC .element_to_be_clickable (self . elements .SALESORDER )
601621 ).click ()
602622
603623 self .state .change_state (self .identify_page ())
0 commit comments