def AddBasicInformation(driver, eventObj): # Add Basic Information helper.ClickElementFromTagAndText(driver, "button", "Create a Sign Up") helper.PauseForEffect(SIGN_UP_GENIUS_TIMEOUT) titleID = "signuptitle" selectGroupID = "selectgroup" selectTypeID = "selecttype" categoriesID = "searchCategories" if not helper.HasPageLoadedIDCheck(driver, SIGN_UP_GENIUS_TIMEOUT, titleID): print("Page has not loaded in time") return eventURL driver.find_element_by_id(titleID).click() pyautogui.write(eventObj["title"]) select = Select(driver.find_element_by_id(selectGroupID)) select.select_by_visible_text(eventObj["group"]) select = Select(driver.find_element_by_id(selectTypeID)) select.select_by_visible_text(eventObj["type"]) select = Select(driver.find_element_by_id(categoriesID)) select.select_by_visible_text(eventObj["categories"]) Scroll(100, 5) saveAndContiueText = "Save and Continue" helper.ClickElementFromTagAndText(driver, "span", saveAndContiueText) helper.PauseForEffect(SIGN_UP_GENIUS_TIMEOUT) return driver.current_url
def addAssist(driver, eventObj): assistEventLink = "Assist" action = ActionChains(driver) attendEventLink = driver.find_element_by_partial_link_text(assistEventLink) action.click(on_element=attendEventLink) action.perform() driver.switch_to.window(driver.window_handles[-1]) addLeadershipButtonID = "reviews_item_form_button" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, addLeadershipButtonID): print("Page has not loaded in time") return eventDateID = "date_191" eventAttendanceID = "number_224" textAreaID = "textarea_195" driver.find_element_by_id(eventDateID).send_keys(eventObj["date"]) driver.find_element_by_id(eventAttendanceID).send_keys( eventObj["attendance"]) driver.find_element_by_id(textAreaID).send_keys(eventObj["description"]) if "photo" in eventObj: addPhotoAssist(driver, eventObj["photo"]) helper.PauseForEffect(REALITY_HUB_TIMEOUT) driver.find_element_by_id(addLeadershipButtonID).click() helper.PauseForEffect(REALITY_HUB_TIMEOUT) # Only Close the TAB driver.close()
def addBlog(driver, eventObj): blogEventLink = "Blog" action = ActionChains(driver) attendEventLink = driver.find_element_by_partial_link_text(blogEventLink) action.click(on_element=attendEventLink) action.perform() driver.switch_to.window(driver.window_handles[-1]) addLeadershipButtonID = "reviews_item_form_button" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, addLeadershipButtonID): print("Page has not loaded in time") return blogDateID = "date_381" blogNameID = "textField_382" blogTitleID = "textField_383" linkID = "link_385" textAreaID = "textarea_386" driver.find_element_by_id(blogDateID).send_keys(eventObj["date"]) driver.find_element_by_id(blogNameID).send_keys(eventObj["name"]) driver.find_element_by_id(blogTitleID).send_keys(eventObj["title"]) helper.ClearAndAddElement(driver, linkID, eventObj["link"]) driver.find_element_by_id(textAreaID).send_keys(eventObj["description"]) helper.PauseForEffect(REALITY_HUB_TIMEOUT) driver.find_element_by_id(addLeadershipButtonID).click() helper.PauseForEffect(REALITY_HUB_TIMEOUT) # Only Close the TAB driver.close()
def basicPage(driver, eventObj): neighborText = "Choose neighbors" helper.ClickElementFromTagAndText(driver, "span", neighborText) helper.PauseForEffect(1) #Summer Lake + Nearby if eventObj["neighborType"] == "Summer Lake": helper.ClickElementFromTagAndText(driver, "label", eventObj["neighborType"], True) else: helper.ClickElementFromTagAndText(driver, "label", eventObj["neighborType"], True) helper.ClickElementFromTagAndText(driver, "button", "Next") neighborText = "Choose category" helper.ClickElementFromTagAndText(driver, "span", neighborText) helper.PauseForEffect(1) #Classes helper.ClickElementFromTagAndText(driver, "label", eventObj["categoryType"]) driver.find_element_by_xpath( '//input[@data-testid="event-form-subject"]').send_keys( eventObj["title"]) driver.find_element_by_xpath( '//textarea[@data-testid="event-form-body"]').send_keys( eventObj["description"]) driver.find_element_by_xpath( '//button[@data-testid="event-form-next-button"]').click()
def AddPublish(driver, eventObj): helper.PauseForEffect(MEDIUM_PAUSE) for i in range(0, TAB_COUNT_PUBLISH): pyautogui.press(["tab"]) helper.PauseForEffect(SMALL_PAUSE) pyautogui.press(["space"]) helper.PauseForEffect(SIGN_UP_GENIUS_TIMEOUT) element = driver.find_element_by_partial_link_text( "https://www.signupgenius") return element.text
def CreateTickets(driver, eventObj): helper.PauseForEffect(EVENTBRITE_TIMEOUT) if eventObj["type"] == "Free": helper.ClickElementFromTagAndText(driver, "div", "Free") quantityID = "ticket-quantity" driver.find_element_by_id(quantityID).send_keys(eventObj["amount"]) else: print("Other Types not supported") helper.ClickElementFromTagAndText(driver, "button", "Save") helper.PauseForEffect(EVENTBRITE_TIMEOUT)
def CreateAndRecord(inputFileName, inputDate, totalTime): fileName = CreateNewKMLFile(inputFileName, inputDate) print("Opening File") helper.PauseForEffect(helper.SMALL_PAUSE) print(os.path.join(os.getcwd(), "StartPoint.kml")) OpenFile(os.path.join(os.getcwd(), "StartPoint.kml")) helper.PauseForEffect(helper.SMALL_PAUSE) OpenFile(fileName) helper.PauseForEffect(helper.SMALL_PAUSE) RecordTour(fileName, totalTime) helper.PauseForEffect(helper.SMALL_PAUSE) # Check Every Few Interval if the recording has stopped while not EndReached(): helper.PauseForEffect(helper.MEDIUM_PAUSE) CleanUp()
def CreateOnlinePage(driver, eventObj): helper.PauseForEffect(EVENTBRITE_TIMEOUT) if "video" in eventObj: Scroll(-100, 5) helper.ClickElementFromTagAndText(driver, "span", "Add video") Scroll(100, 5) videoLinkID = "video-url-0" driver.find_element_by_id(videoLinkID).send_keys(eventObj["video"]) if "link" in eventObj: Scroll(-100, 5) helper.ClickElementFromTagAndText(driver, "span", "Add link") Scroll(100, 5) linkTitleID = "file-name-0" linkLinkID = "file-url-0" driver.find_element_by_id(linkTitleID).send_keys(eventObj["link"]["title"]) driver.find_element_by_id(linkLinkID).send_keys(eventObj["link"]["link"]) helper.ClickElementFromTagAndText(driver, "button", "Save") helper.PauseForEffect(EVENTBRITE_TIMEOUT)
def CleanUp(): x, y = helper.LocateImage("./common/tempPlacesNotSelected.png") if x != None and y != None: helper.ClickAndWait(x, y, helper.SMALL_PAUSE) pyautogui.click(button='right') pyautogui.press(["down", "down", "down"]) pyautogui.press(["enter"]) helper.PauseForEffect(helper.SMALL_PAUSE) pyautogui.press(["enter"])
def CreateOrderConfirmation(driver, eventObj, signUpGeniusLink): helper.PauseForEffect(EVENTBRITE_TIMEOUT) textBoxName = "group-order_confirmation-confirmation_page_message" confirm = eventObj["confirm"] confirm = confirm.replace("$LINK$", signUpGeniusLink) driver.find_element_by_name(textBoxName).send_keys(confirm) Scroll(-100, 10) emailBoxID = "tinymce" driver.switch_to_frame(0) email = eventObj["email"] email = confirm.replace("$LINK$", signUpGeniusLink) driver.find_element_by_xpath('html/body').send_keys(email) driver.switch_to_default_content() pyautogui.press(["tab"]) pyautogui.press(["tab"]) pyautogui.press(["tab"]) pyautogui.press(["tab"]) pyautogui.press(["enter"]) helper.PauseForEffect(EVENTBRITE_TIMEOUT)
def addResource(driver, eventObj): blogEventLink = "Resource" action = ActionChains(driver) attendEventLink = driver.find_element_by_partial_link_text(blogEventLink) action.click(on_element=attendEventLink) action.perform() driver.switch_to.window(driver.window_handles[-1]) addLeadershipButtonID = "reviews_item_form_button" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, addLeadershipButtonID): print("Page has not loaded in time") return resourceDateID = "date_406" resourceNameID = "textField_407" linkID = "link_410" textAreaID = "textarea_409" driver.find_element_by_id(resourceDateID).send_keys(eventObj["date"]) driver.find_element_by_id(resourceNameID).send_keys(eventObj["name"]) helper.ClearAndAddElement(driver, linkID, eventObj["link"]) driver.find_element_by_id(textAreaID).send_keys(eventObj["description"]) # Radio Button elements = driver.find_elements_by_tag_name("label") for elem in elements: if elem.text == eventObj["type"]: elem.click() # Climate Justice Question justiceID = "" if eventObj["justice"] == "yes": justiceID = "checkboxes_450_0" if eventObj["justice"] == "no": justiceID = "checkboxes_450_1" driver.find_element_by_id(justiceID).click() helper.PauseForEffect(REALITY_HUB_TIMEOUT) driver.find_element_by_id(addLeadershipButtonID).click() helper.PauseForEffect(REALITY_HUB_TIMEOUT) # Only Close the TAB driver.close()
def GoToStartPoint(startVal, endVal, x, y): count = 0 # Need Extra as we are taking a snapshot after click # For FORWARD we should move 1 step ahead, hence range increases by 2 # For BACKWARD we should go 1 step behind, hence rnage should not increase for i in range(1, startVal + (1 + GetMode(startVal, endVal))): helper.ClickAndWait(x + backwardDelta[0], y + backwardDelta[1]) count += 1 print("Total Clicks : {}".format(str(count))) helper.PauseForEffect(helper.MEDIUM_PAUSE) print("Current Mode is {}".format(str(GetMode(startVal, endVal))))
def addEvent(eventObj, credentials, signUpGeniusLink): eventURL = None driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.eventbrite.com/signin/") # Username emailFieldID = "email" if not helper.HasPageLoadedIDCheck(driver, EVENTBRITE_TIMEOUT, emailFieldID): print("Page has not loaded in time") return eventURL driver.find_element_by_id(emailFieldID).send_keys(credentials["username"]) pyautogui.press(["enter"]) # Password passwordFieldID = "password" if not helper.HasPageLoadedIDCheck(driver, EVENTBRITE_TIMEOUT, passwordFieldID): print("Page has not loaded in time") return eventURL driver.find_element_by_id(passwordFieldID).send_keys(credentials["password"]) pyautogui.press(["enter"]) helper.PauseForEffect(EVENTBRITE_TIMEOUT) # Create a new Event helper.ClickElementFromTagAndText(driver, "a", "Create Event") currentURL = CreateBasicInfo(driver, eventObj["basic_info"]) eventID = GetEventID(currentURL) print("Event ID is {}".format(eventID)) driver.get(currentURL) CreateDetails(driver, eventObj["details"], signUpGeniusLink) driver.get("https://www.eventbrite.com/manage/events/{}/online-event".format(eventID)) CreateOnlinePage(driver, eventObj["online_page"]) driver.get("https://www.eventbrite.com/manage/events/{}/tickets/create".format(eventID)) CreateTickets(driver, eventObj["tickets"]) driver.get("https://www.eventbrite.com/myevent/{}/order-confirmation/".format(eventID)) CreateOrderConfirmation(driver, eventObj["order_confirmation"], signUpGeniusLink) driver.get("https://www.eventbrite.com/manage/events/{}/preview_publish".format(eventID)) CreatePublish(driver, eventObj["publish"]) driver.get("https://www.eventbrite.com/invites?eid={}".format(eventID)) CreateEmailInvitations(driver, eventObj["invitations"]) driver.get("https://www.eventbrite.com/myevent?eid={}".format(eventID)) url = GetEventURL(driver) print(url) driver.close() return url
def addOrganize(driver, eventObj): organizeEventLink = "Organize" action = ActionChains(driver) attendEventLink = driver.find_element_by_partial_link_text( organizeEventLink) action.click(on_element=attendEventLink) action.perform() driver.switch_to.window(driver.window_handles[-1]) addLeadershipButtonID = "reviews_item_form_button" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, addLeadershipButtonID): print("Page has not loaded in time") return eventDateID = "date_412" eventNameID = "textField_413" eventAttendanceID = "textField_415" textAreaID = "textarea_418" driver.find_element_by_id(eventDateID).send_keys(eventObj["date"]) driver.find_element_by_id(eventNameID).send_keys(eventObj["name"]) driver.find_element_by_id(eventAttendanceID).send_keys( eventObj["attendance"]) driver.find_element_by_id(textAreaID).send_keys(eventObj["description"]) # Radio Button elements = driver.find_elements_by_tag_name("label") for elem in elements: if elem.text == eventObj["type"]: elem.click() if "photo" in eventObj: addPhotoOrganize(driver, eventObj["photo"]) helper.PauseForEffect(REALITY_HUB_TIMEOUT) driver.find_element_by_id(addLeadershipButtonID).click() helper.PauseForEffect(REALITY_HUB_TIMEOUT) # Only Close the TAB driver.close()
def AddSlots(driver, eventObj): helper.PauseForEffect(MEDIUM_PAUSE) helper.ClickElementFromTagAndText(driver, "strong", eventObj["type_schedule"]) tabQuantity = 0 if eventObj["type_schedule"] == "Slots Only": tabQuantity = 3 for i in range(0, tabQuantity): pyautogui.press(["tab"]) helper.PauseForEffect(SMALL_PAUSE) pyautogui.write(eventObj["date"], interval=0.1) print(eventObj["date"]) helper.PauseForEffect(SMALL_PAUSE) pyautogui.press(["enter"]) helper.PauseForEffect(SMALL_PAUSE) all_slots = eventObj["all_slots"] lenSlots = len(all_slots) pyautogui.press(["tab"]) pyautogui.press(["space"]) for i in range(0, lenSlots): slot = all_slots[i] helper.PauseForEffect(SMALL_PAUSE) driver.find_element_by_name("slotname").click() pyautogui.write(slot["title"], interval=0.1) pyautogui.press(["tab"]) pyautogui.write(slot["comment"], interval=0.1) pyautogui.press(["tab"]) pyautogui.write(slot["quantity"], interval=0.1) pyautogui.press(["tab"]) helper.PauseForEffect(SMALL_PAUSE) if i < (lenSlots - 1): pyautogui.press(["tab"]) pyautogui.press(["tab"]) pyautogui.press(["enter"]) helper.PauseForEffect(SMALL_PAUSE) helper.PauseForEffect(MEDIUM_PAUSE) saveAndContiueText = "Save and Continue" helper.ClickElementFromTagAndText(driver, "span", saveAndContiueText) helper.PauseForEffect(SIGN_UP_GENIUS_TIMEOUT)
def CreateTour(inputFileName, totalTime): # Video Details pathVal, fileName = os.path.split(inputFileName) fileName, extension = os.path.splitext(fileName) videoName = os.path.join( pathVal, fileName + helper.videoExtensionMap[helper.VideoCodec[DEFAULT_VIDEO_CODEC]]) # Complete Recording x, y = helper.LocateImage("./common/saveTour.png") if x != None and y != None: helper.ClickAndWait(x, y, helper.SMALL_PAUSE) pyautogui.write("Tour") helper.PauseForEffect(helper.SMALL_PAUSE) pyautogui.press(["enter"]) helper.PauseForEffect(helper.SMALL_PAUSE) helper.ClickAndWait(x + closeX, y + closeY, helper.SMALL_PAUSE) pyautogui.hotkey("alt", "t") pyautogui.press(["down", "down", "down"]) pyautogui.press(["enter"]) helper.PauseForEffect(helper.SMALL_PAUSE) pyautogui.press(["tab", "tab"]) pyautogui.write(videoName) helper.LocateAndClick("./common/createMovie.png", helper.SMALL_PAUSE)
def detailsPage(driver, eventObj, eventBriteLink): # Event Details pyautogui.press(["tab"]) pyautogui.press(["tab"]) helper.PauseForEffect(1) pyautogui.write(eventObj["start_date"]) pyautogui.press(["tab"]) pyautogui.press(["tab"]) helper.PauseForEffect(2) pyautogui.write(eventObj["start_time"], interval=0.1) print(eventObj["start_time"]) helper.PauseForEffect(2) pyautogui.press(["tab"]) helper.PauseForEffect(1) pyautogui.press(["enter"]) helper.PauseForEffect(1) pyautogui.press(["tab"]) pyautogui.press(["tab"]) pyautogui.press(["tab"]) pyautogui.press(["tab"]) helper.PauseForEffect(1) pyautogui.write(eventObj["end_date"]) pyautogui.press(["tab"]) helper.PauseForEffect(2) pyautogui.write(eventObj["end_time"], interval=0.1) print(eventObj["end_time"]) helper.PauseForEffect(2) # Event Location eventLocation = eventObj["website"] if eventBriteLink: eventLocation = eventBriteLink driver.find_element_by_xpath( '//input[@class="postbox-field-text-input pac-target-input"]' ).send_keys(eventLocation) driver.find_element_by_xpath( '//input[@class="postbox-event-checkbox"]').click() driver.find_element_by_xpath( '//button[@data-testid="button-detail"]').click()
def CreateDetails(driver, eventObj, signUpGeniusLink): eventURL = None summaryID = "event-design-summary" if not helper.HasPageLoadedIDCheck(driver, EVENTBRITE_TIMEOUT, summaryID): print("Page has not loaded in time") return eventURL # Upload Banner uploadImageClass = "eds-uploader-dropzone__cover" allImages = driver.find_elements_by_class_name(uploadImageClass) allImages[0].click() helper.PauseForEffect(SMALL_PAUSE) pyautogui.write(eventObj["banner"], interval = 0.1) pyautogui.press(["enter"]) helper.PauseForEffect(SMALL_PAUSE) # Will Always ask for CROP, User has to ensure it is up to size pyautogui.press(["tab"]) pyautogui.press(["enter"]) # Add text richTextBoxClass = "eds-richtexteditor__input" driver.find_element_by_id(summaryID).send_keys(eventObj["summary"]) description = eventObj["description"] description = description.replace("$LINK$", signUpGeniusLink) driver.find_element_by_class_name(richTextBoxClass).send_keys(description) # Add Chef Image if "add" in eventObj: allAdds = eventObj["add"] for add in allAdds: assert "type" in add Scroll(-100, 5) if add["type"] == "image": helper.ClickElementFromTagAndText(driver, "button", "Add Image") helper.PauseForEffect(SMALL_PAUSE) Scroll(-100, 5) allImages = driver.find_elements_by_class_name(uploadImageClass) print(len(allImages)) allImages[0].click() helper.PauseForEffect(SMALL_PAUSE) pyautogui.write(add["content"], interval = 0.1) pyautogui.press(["enter"]) helper.PauseForEffect(SMALL_PAUSE) else: print("Other types not yet supported") helper.PauseForEffect(SMALL_PAUSE) helper.ClickElementFromTagAndText(driver, "button", "Save") helper.PauseForEffect(EVENTBRITE_TIMEOUT)
def addEvent(eventObj, credentials): eventURL = None driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.signupgenius.com/register") # Login emailFieldID = "email" passwordFieldID = "pword" loginButtonID = "loginBtnId" if not helper.HasPageLoadedIDCheck(driver, SIGN_UP_GENIUS_TIMEOUT, loginButtonID): print("Page has not loaded in time") return eventURL driver.find_element_by_partial_link_text("Got it!").click() driver.find_element_by_id(emailFieldID).send_keys(credentials["username"]) driver.find_element_by_id(passwordFieldID).send_keys( credentials["password"]) driver.find_element_by_id(loginButtonID).send_keys(Keys.ENTER) createSignUpClass = "btn btn-green black-shadow-active" helper.PauseForEffect(SIGN_UP_GENIUS_TIMEOUT) signUpListItemID = "member-sidebar--menu-signupsid" if not helper.HasPageLoadedIDCheck(driver, SIGN_UP_GENIUS_TIMEOUT, signUpListItemID): print("Page has not loaded in time") return eventURL # Start with Base url = AddBasicInformation(driver, eventObj) eventID = GetEventID(url) # driver.get("https://www.signupgenius.com/index.cfm?go=w.manageSignUp#/{}/slots/".format(eventID)) # Other Details AddSlots(driver, eventObj) AddSettings(driver, eventObj) # Publish driver.get( "https://www.signupgenius.com/index.cfm?go=w.manageSignUp#/{}/publish/" .format(eventID)) signUpLink = AddPublish(driver, eventObj) driver.close() print(signUpLink) return signUpLink
def CreateEmailInvitations(driver, eventObj): helper.PauseForEffect(EVENTBRITE_TIMEOUT) helper.ClickElementFromTagAndText(driver, "button", "Create Classic Invite") helper.PauseForEffect(EVENTBRITE_TIMEOUT) # Add Guests driver.find_element_by_partial_link_text("+ Add Guests").click() guestsType = eventObj["add_guests"] helper.PauseForEffect(SMALL_PAUSE) if guestsType["type"] == "previous": driver.find_element_by_id("c").click() helper.PauseForEffect(SMALL_PAUSE) driver.set_window_size(1000, 1000) driver.maximize_window() element = driver.find_element_by_id(guestsType["eventID"]) driver.execute_script('return arguments[0].scrollIntoView();', element) element.click() else: print("Other Guetst Add type not supported") helper.PauseForEffect(SMALL_PAUSE) addID = "lightbox_a_save_button" driver.find_element_by_id(addID).click() # Add Schedule email_time = eventObj["email_time"] if email_time["type"] == "schedule": whenName = "schedule_mode_x" driver.find_element_by_name(whenName).click() dateID = "schedule_date" helper.ClearAndAddElement_Input(driver, dateID, email_time["date"]) hourID = "endhr" minutesID = "endmin" ampmID = "endampm" select = Select(driver.find_element_by_id(hourID)) select.select_by_visible_text(email_time["hour"]) select = Select(driver.find_element_by_id(minutesID)) select.select_by_visible_text(email_time["min"]) select = Select(driver.find_element_by_id(ampmID)) select.select_by_visible_text(email_time["ampm"]) else: print("Other Schedule types not supported") helper.PauseForEffect(SMALL_PAUSE) driver.find_element_by_partial_link_text("Save & Schedule").click() helper.PauseForEffect(EVENTBRITE_TIMEOUT)
def CreatePublish(driver, eventObj): helper.PauseForEffect(EVENTBRITE_TIMEOUT) helper.ClickElementFromTagAndText(driver, "button", "Publish") helper.PauseForEffect(EVENTBRITE_TIMEOUT)
def OpenFile(fileName): pyautogui.hotkey("ctrl", "o") helper.PauseForEffect(helper.SMALL_PAUSE) pyautogui.write(fileName) pyautogui.press(["enter"])
def record(inputJSON): CheckJSON(inputJSON) helper.PauseForEffect(helper.SMALL_PAUSE) allDates = inputJSON["dates"] for date in allDates: CreateAndRecord(inputJSON["file"], date, inputJSON["time"])
import pyautogui import argparse import helper imageSnapRegion = (590, 170, 2600, 1420) parser = argparse.ArgumentParser() parser.add_argument('-name', type=str, help='Image file Name') parser.add_argument('-imgType', type=str, help='imageType') parser.add_argument('-wait', type=str, help='Time to wait before taking snap') args = parser.parse_args() imageName = args.name imageType = args.imgType wait = args.wait imageType = helper.imageTypeMap[helper.ImageType[imageType]] helper.PauseForEffect(int(wait)) helper.Beep() pyautogui.screenshot(imageName + imageType, region=imageSnapRegion) helper.Beep()
def addAllLeadership(eventObj, credentials): driver = webdriver.Chrome() driver.maximize_window() driver.get("https://realityhub.climaterealityproject.org/home") # Page Load loginButtonID = "headerLogLink" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, loginButtonID): print("Page has not loaded in time") return driver.find_element_by_id(loginButtonID).send_keys(Keys.ENTER) # Login emailFieldID = "email" passwordFieldID = "password" loginButtonID = "main_login_button" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, emailFieldID): print("Page has not loaded in time") return driver.find_element_by_id(emailFieldID).send_keys(credentials["username"]) driver.find_element_by_id(passwordFieldID).send_keys( credentials["password"]) driver.find_element_by_id(loginButtonID).send_keys(Keys.ENTER) # Go to Events actBarID = "navbarDropdown_1" recordLeadershipText = "Record an" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, actBarID): print("Page has not loaded in time") return action = ActionChains(driver) actBar = driver.find_element_by_id(actBarID) action.click(on_element=actBar) action.perform() # Need to see it on the screen before you click helper.PauseForEffect(1) # Need to create a new chain every time action = ActionChains(driver) attendEventLink = driver.find_element_by_partial_link_text( recordLeadershipText) action.click(on_element=attendEventLink) action.perform() helper.PauseForEffect(REALITY_HUB_TIMEOUT) if "organize" in eventObj: allOrganizations = eventObj["organize"] for organizeObj in allOrganizations: driver.switch_to.window(driver.window_handles[-1]) addOrganize(driver, organizeObj) if "assist" in eventObj: allAssists = eventObj["assist"] for assistObj in allAssists: driver.switch_to.window(driver.window_handles[-1]) addAssist(driver, assistObj) if "participate" in eventObj: allParticipates = eventObj["participate"] for participateObj in allParticipates: driver.switch_to.window(driver.window_handles[-1]) addParticipate(driver, participateObj) if "blog" in eventObj: allBlogs = eventObj["blog"] for blogObj in allBlogs: driver.switch_to.window(driver.window_handles[-1]) addBlog(driver, blogObj) if "resource" in eventObj: allResources = eventObj["resource"] for resourceObj in allResources: driver.switch_to.window(driver.window_handles[-1]) addResource(driver, resourceObj) # All Acts have been added # Now Close the window driver.quit()
def addEvent(eventObj, credentials, eventBriteLink): eventURL = None driver = webdriver.Chrome() driver.maximize_window() driver.get("https://realityhub.climaterealityproject.org/home") # Page Load loginButtonID = "headerLogLink" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, loginButtonID): print("Page has not loaded in time") return eventURL driver.find_element_by_id(loginButtonID).send_keys(Keys.ENTER) # Login emailFieldID = "email" passwordFieldID = "password" loginButtonID = "main_login_button" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, emailFieldID): print("Page has not loaded in time") return eventURL driver.find_element_by_id(emailFieldID).send_keys(credentials["username"]) driver.find_element_by_id(passwordFieldID).send_keys(credentials["password"]) driver.find_element_by_id(loginButtonID).send_keys(Keys.ENTER) # Go to Events actBarID = "navbarDropdown_1" attendEventText = "Attend an Event" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, actBarID): print("Page has not loaded in time") return eventURL action = ActionChains(driver) actBar = driver.find_element_by_id(actBarID) action.click(on_element = actBar) action.perform() # Need to see it on the screen before you click helper.PauseForEffect(1) # Need to create a new chain every time action = ActionChains(driver) attendEventLink = driver.find_element_by_partial_link_text(attendEventText) action.click(on_element = attendEventLink) action.perform() postAnEventID = "html_custom_block_0_0_button" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, postAnEventID): print("Page has not loaded in time") return eventURL driver.find_element_by_id(postAnEventID).send_keys(Keys.ENTER) # Fill Event details eventNameID = "textField_event_name" startDateID = "dateTime_event_start" startTimeID = "dateTime_event_start_time" endDateID = "dateTime_event_end" endTimeID = "dateTime_event_end_time" timeZoneClass = "time-zone-link btn btn-primary" timeZoneCountryID = "time_zone_country_select" timeZoneCityID = "time_zone_city_select" eventVenueID = "textField_event_venue" addrLine1ID = "Address_event_address_address_1_input" addrLine2ID = "Address_event_address_address_2_input" cityID = "Address_event_address_address_city_input" stateID = "Address_event_address_state_text" postCodeID = "Address_event_address_address_postal_code_input" countryID = "Address_event_address_country_select" eventTypeID = "dropDown_3031" hostNameID = "textField_2818" hostEmailID = "textField_2820" hostGroupID = "textField_3335" eventWebsiteID = "link_3336" submitEventID = "events_item_form_button" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT, eventNameID): print("Page has not loaded in time") return eventURL # Basic driver.find_element_by_id(eventNameID).send_keys(eventObj["name"]) helper.PauseForEffect(REALITY_HUB_TIMEOUT) driver.switch_to_frame(0) driver.find_element_by_xpath('html/body').send_keys(eventObj["description"]) driver.switch_to_default_content() print("Basic Data Added") # Time helper.ClearAndAddElement(driver, startDateID, eventObj["start_date"]) helper.ClearAndAddElement(driver, startTimeID, eventObj["start_time"]) helper.ClearAndAddElement(driver, endDateID, eventObj["end_date"]) helper.ClearAndAddElement(driver, endTimeID, eventObj["end_time"]) attendEventLink = driver.find_element_by_partial_link_text("NEW YORK").click() helper.PauseForEffect(REALITY_HUB_TIMEOUT) select = Select(driver.find_element_by_id(timeZoneCountryID)) select.select_by_visible_text(eventObj["timeZone_Country"]) select = Select(driver.find_element_by_id(timeZoneCityID)) select.select_by_visible_text(eventObj["timeZone_Time"]) print("Time Data Added") # Address driver.find_element_by_id(eventVenueID).send_keys(eventObj["venue"]) driver.find_element_by_id(addrLine1ID).send_keys(eventObj["addr_line_1"]) driver.find_element_by_id(addrLine2ID).send_keys(eventObj["addr_line_2"]) driver.find_element_by_id(cityID).send_keys(eventObj["addr_city"]) driver.find_element_by_id(stateID).send_keys(eventObj["addr_state"]) driver.find_element_by_id(postCodeID).send_keys(eventObj["addr_pincode"]) select = Select(driver.find_element_by_id(countryID)) select.select_by_visible_text(eventObj["addr_country"]) print("Address Data Added") # Event Type select = Select(driver.find_element_by_id(eventTypeID)) select.select_by_visible_text(eventObj["type"]) driver.find_element_by_id(hostNameID).send_keys(eventObj["hostName"]) driver.find_element_by_id(hostEmailID).send_keys(eventObj["hostEmail"]) driver.find_element_by_id(hostGroupID).send_keys(eventObj["hostOrg"]) if eventBriteLink: eventObj["website"] = eventBriteLink element = driver.find_element_by_id(eventWebsiteID) element.clear() element.send_keys(eventObj["website"]) # Submit helper.PauseForEffect(REALITY_HUB_TIMEOUT) driver.find_element_by_id(submitEventID).click() #Ensure event has been completed completeButtonID = "send_event_message_button_events_event_message_0_9" if not helper.HasPageLoadedIDCheck(driver, REALITY_HUB_TIMEOUT + 30, completeButtonID): print("Page has not loaded in time") eventURL = "Event not Created" else: eventURL = driver.current_url driver.close() return eventURL
if args.param is not None: try: with open(args.param, "r") as f: paramJSON = json.load(f) except OSError: print("File Read Error") helper.PrettyPrintJSON(paramJSON) # Import pywinauto Application class from pywinauto.application import Application # Start a new process and specify a path to the text file app = Application().start( '"C:/Program Files/Google/Google Earth Pro/client/googleearth.exe"', timeout=helper.WAIT_WINDOW) helper.PauseForEffect(helper.MEDIUM_PAUSE) dlg_spec = app.window() # Resize the window x, y = helper.LocateImage('./common/restore.png') if x != None and y != None: helper.LocateAndClick('./common/restore.png', helper.SMALL_PAUSE) helper.LocateAndClick('./common/maximize.png', helper.SMALL_PAUSE) x, y = helper.LocateImage('./common/closeIntro.png') if x != None and y != None: helper.LocateAndClick('./common/closeIntro.png', helper.SMALL_PAUSE) if paramJSON: assert "data" in paramJSON, "Data parameter not provided" allData = paramJSON["data"]
def AddSettings(driver, eventObj): # No Changes in this region hence small pause sufficient helper.PauseForEffect(SMALL_PAUSE) saveAndContiueText = "Save and Continue" helper.ClickElementFromTagAndText(driver, "span", saveAndContiueText) helper.PauseForEffect(SMALL_PAUSE)
def record(inputJSON): helper.PauseForEffect(helper.SMALL_PAUSE) if "place" in inputJSON: GoToPlace(inputJSON["place"]) if "cooridnate" in inputJSON: GoToPlace(inputJSON["cooridnate"]) if "scroll" in inputJSON: helper.LocateAndClick('./common/earth.png', helper.MEDIUM_PAUSE, adjY=centerOfPoint) for i in range(0, inputJSON["scroll"]): pyautogui.scroll(SCROLL_AMOUNT) # Locate Time Lapse x, y = helper.LocateImage('./common/timelapse.png') if x != None and y != None: # Start Time Lapse helper.ClickAndWait(x, y, helper.SMALL_PAUSE) startVal = inputJSON["start_count"] endVal = inputJSON["end_count"] assert startVal != endVal, "Start and End Cannot be the same" # When Imagery starts its on the actual date # At the current date there is not image # When you click BACK for the first time, it moves to the # Latest Available Imagery / Image Ticker 0 helper.ClickAndWait(x + backwardDelta[0], y + backwardDelta[1]) GoToStartPoint(startVal, endVal, x, y) # Preprocessing before taking snapshot stepX = x stepY = y if GetMode(startVal, endVal) == -1: stepX = x + backwardDelta[0] stepY = y + backwardDelta[1] if GetMode(startVal, endVal) == 1: stepX = x + forwardDelta[0] stepY = y + forwardDelta[1] listToCapture = GetListToCapture(inputJSON, startVal, endVal) print(listToCapture) totalPad = int(math.ceil(math.log10(max(startVal, endVal)))) imageName, imageType = GetImageNameAndType(inputJSON["image"]) CreateImages(startVal, endVal, stepX, stepY, listToCapture, imageName, totalPad, imageType, imageRegion) # Make the video if needed if "video" in inputJSON: videoJSON = inputJSON["video"] CreateVideoFromJSON(videoJSON, imageType) # Delete the images if "delete" in inputJSON["image"] and inputJSON["image"][ "delete"] == "Yes": if inputJSON["type"] == "TIMELAPSE" and "video" in inputJSON: for fileName in os.listdir('./'): if fileName.endswith(imageType): os.remove(fileName) # Close Time Lapse helper.ClickAndWait(x, y)
def CreateBasicInfo(driver, eventObj): titleID = "event-basicInfo-title" if not helper.HasPageLoadedIDCheck(driver, EVENTBRITE_TIMEOUT, titleID): print("Page has not loaded in time") return eventURL driver.find_element_by_id(titleID).send_keys(eventObj["title"]) selectID = "event-basicinfo-organizer-profile" eventTypeName = "eventType" eventTopicName = "eventTopic" eventSubTopicName = "eventSubTopic" tagFieldName = "tagInputField" select = Select(driver.find_element_by_id(selectID)) select.select_by_visible_text(eventObj["organizer"]) select = Select(driver.find_element_by_name(eventTypeName)) select.select_by_visible_text(eventObj["type"]) select = Select(driver.find_element_by_name(eventTopicName)) select.select_by_visible_text(eventObj["topic"]) helper.PauseForEffect(SMALL_PAUSE) select = Select(driver.find_element_by_name(eventSubTopicName)) select.select_by_visible_text(eventObj["subTopic"]) fieldValue = driver.find_element_by_name(tagFieldName) allTags = eventObj["tags"] allTags = (allTags, allTags[0:MAX_TAGS])[len(allTags) > MAX_TAGS] for tag in allTags: fieldValue.send_keys(tag) pyautogui.press("enter") helper.PauseForEffect(SMALL_PAUSE) Scroll(-100, 5) print("Scroll Completed") locationDetails = eventObj["location"] helper.ClickElementFromTagAndText(driver, "div", "Online event") print("Completd DIV try") # if locationDetails["type"] == "Venue": # driver.find_element_by_id("segmented-venueType-0").click() # if locationDetails["type"] == "Online event": # driver.find_element_by_id("segmented-venueType-1").click() # if locationDetails["type"] == "To be announced": # driver.find_element_by_id("segmented-venueType-2").click() # print("Completd Radio Try") Scroll(-100, 5) dateAndTime = eventObj["dateAndTime"] helper.MoveToElement(driver, "div", "Single Event") helper.ClickElementFromTagAndText(driver, "div", "Single Event") if dateAndTime["type"] == "Single Event": startDateID = "event-startDate" startTimeID = "event-startTime" endDateID = "event-endDate" endTimeID = "event-endTime" helper.ClearAndAddElement_Input(driver, startDateID, dateAndTime["start_date"]) helper.ClearAndAddElement_Input(driver, startTimeID, dateAndTime["start_time"]) helper.ClearAndAddElement_Input(driver, endDateID, dateAndTime["end_date"]) helper.ClearAndAddElement_Input(driver, endTimeID, dateAndTime["end_time"]) selectZoneName = "venueTimeZone" select = Select(driver.find_element_by_name(selectZoneName)) select.select_by_visible_text(dateAndTime["zone"]) helper.ClickElementFromTagAndText(driver, "button", "Save & Continue") # helper.PauseForEffect(EVENTBRITE_TIMEOUT) helper.PauseForEffect(EVENTBRITE_TIMEOUT) return driver.current_url