def reserve(reservation): driver.switch_to_default_content() driver.switch_to_frame(driver.find_element_by_css_selector("frame[src='topnavframe.asp']")) driver.find_element_by_css_selector('a[href*="MenuNavFrame.asp?MenuID=4"').click() driver.switch_to_default_content() driver.switch_to_frame(driver.find_element_by_css_selector("frame[src='MenuNavFrame.asp?MenuID=10']")) driver.find_element_by_css_selector('a[href*="reservations/addupdatebooking.asp"').click() driver.switch_to_default_content() driver.switch_to_frame(driver.find_element_by_css_selector("frame[src='portals/portal.asp']")) driver.find_element_by_name("ShipRef").send_keys(reservation[0].BOL) Select(driver.find_element_by_name("Direction")).select_by_visible_text("Inbound") Select(driver.find_element_by_name("ConvType")).select_by_visible_text("Truck") Select(driver.find_element_by_id("RT")).select_by_visible_text("Import") if steamShipLine.get()=="HAM": Select(driver.find_element_by_name("LineID")).select_by_visible_text("Hamburg Sud") elif steamShipLine.get()=="MSC": Select(driver.find_element_by_name("LineID")).select_by_visible_text("Mediterranean Shipping Co.") elif steamShipLine.get()=="CMA": Select(driver.find_element_by_name("LineID")).select_by_visible_text("CMA/CGM Can") Select(driver.find_element_by_name("LEStatus")).select_by_visible_text("Load") driver.find_element_by_name("Submit").click() wait = WebDriverWait(driver, 10) wait.until(lambda driver: "Reservation Number already exists." in driver.page_source or EC.element_to_be_clickable(driver.find_element_by_name("polcd"))) stopThis = [False] if "Reservation Number already exists." in driver.page_source: stopThis = [True] top2 = Toplevel(top) L1 = Label(top2, text="Reservation " + reservation[0].BOL + " already exists.") L1.grid(row=0, column=0, columnspan=2) def callbackContinue(stopThis): stopThis[0] = False top2.destroy() def callbackStop(): top2.destroy() MyButton4 = Button(top2, text="Proceed anyway", width=14, command=lambda: callbackContinue(stopThis)) MyButton4.grid(row=2, column=0) MyButton5 = Button(top2, text="Stop", width=10, command=lambda: callbackStop()) MyButton5.grid(row=2, column=1) top2.lift() top2.attributes('-topmost',True) top2.after_idle(top2.attributes,'-topmost',False) w = 240 # width for the Tk root h = 60 # height for the Tk root # get screen width and height ws = top2.winfo_screenwidth() # width of the screen hs = top2.winfo_screenheight() # height of the screen # calculate x and y coordinates for the Tk root window x = (ws/2) - (w/2) y = (hs/2) - (h/2) # set the dimensions of the screen # and where it is placed top2.geometry('%dx%d+%d+%d' % (w, h, x, y)) # def click2(): # click((ws/2) - (w/2) + E1.winfo_rootx()+1, (hs/2) - (h/2)+E1.winfo_rooty()+1) top2.wait_visibility(MyButton5) moveTo(MyButton5.winfo_rootx()+MyButton5.winfo_width()/2, MyButton5.winfo_rooty()+MyButton5.winfo_height()/2) # top2.mainloop() # print(container.temp) top.wait_window(top2) if not stopThis[0]: return True if stopThis[0]: return False driver.find_element_by_name("polcd").send_keys("CATOR") if reservation[0].size=="20R86" or reservation[0].size=="40R96": driver.find_element_by_name("ReeferFlg").click() driver.find_element_by_name("SetTempNbr").send_keys(str(reservation[0].temp)) Select(driver.find_element_by_name("SetTempUnits")).select_by_value("C") twentyStan = 0 twentyReef = 0 twentyOpen = 0 twentyTank = 0 fourtyStan = 0 fourtyOpen = 0 fourtyOpenHigh = 0 fourtyReef = 0 fourtyHigh = 0 for container in reservation: if container.size=='20D86': twentyStan+=1 elif container.size=='20O86': twentyOpen+=1 elif container.size=='20R86': twentyReef+=1 elif container.size=='20T86': twentyTank+=1 elif container.size=='40D86': fourtyStan+=1 elif container.size=='40O86': fourtyOpen+=1 elif container.size=='40O96': fourtyOpenHigh+=1 elif container.size=='40D96': fourtyHigh+=1 elif container.size=='40R96': fourtyReef+=1 diffTypes = 1 if twentyStan>0: driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(twentyStan) driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("20D86") diffTypes+=1 if twentyOpen>0: driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(twentyOpen) driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("20O86") diffTypes+=1 if twentyReef>0: driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(twentyReef) driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("20R86") diffTypes+=1 if twentyTank>0: driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(twentyTank) driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("20T86") diffTypes+=1 if fourtyStan>0: driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(fourtyStan) driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("40D86") diffTypes+=1 if fourtyOpen>0: driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(fourtyOpen) driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("40O86") diffTypes+=1 if fourtyOpenHigh>0: driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(fourtyOpenHigh) driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("40O96") diffTypes+=1 if fourtyHigh>0: driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(fourtyHigh) driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("40D96") diffTypes+=1 if fourtyReef>0: driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(fourtyReef) driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("40R96") diffTypes+=1 if GetAsyncKeyState(27) < 0: return False driver.find_element_by_name("Submit").click() return True