From d88d231f24cd2a4e251b49abaf64ecaf1250528a Mon Sep 17 00:00:00 2001 From: cheezedoodle2 Date: Mon, 15 May 2023 12:12:12 -0700 Subject: [PATCH] Replaced some timeouts with WebDriverWait to speed up execution --- fp2_11.py | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/fp2_11.py b/fp2_11.py index 1b1ae62..deff5ff 100644 --- a/fp2_11.py +++ b/fp2_11.py @@ -2,7 +2,10 @@ from google.cloud import pubsub_v1 from google.api_core.exceptions import DeadlineExceeded from selenium import webdriver from selenium.webdriver.chrome.options import Options +from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.by import By +from selenium.webdriver.common.keys import Keys +import selenium.common.exceptions import json import time import os @@ -60,6 +63,36 @@ try: except: pass + +def close_modals(): + try: + # time.sleep(2) + # Clear any modal dialog + modal_close_buttons = driver.find_elements(By.XPATH, "//*[contains(concat(' ', normalize-space(@class), ' '), ' icon-icon-close-s ')]") + # print(f"modal_close = {modal_close}") + for button in modal_close_buttons: + try: + button.click() + except Exception as e: + print(f"Exception when clicking on close button for element {button}: {e}") + + # time.sleep(2) + except Exception as e: + print(f"Exception when trying to close discount modal dialog: {e}") + + + try: + # time.sleep(1) + # Clear any notice + notice_close = driver.find_element(By.XPATH, "/html/body/div[3]/div/div[2]/div/div[2]/div/div/div[1]/div[2]/button") + # print(f"notice_close = {notice_close}") + notice_close.click() + # time.sleep(1) + except selenium.common.exceptions.NoSuchElementException as nsee: + print("Purchase option change dialog close button not found") + except Exception as e: + print(f"Exception when trying to close purchase option change dialog: {e}") + # Define callback function for Pub/Sub messages def callback(message): # Extract zip code from message data @@ -67,6 +100,46 @@ def callback(message): print(f"Received zip code: {zip_code}") + while True: + try: + # Enter zip code in the input field and click the "Check" button + WebDriverWait(driver, 2).until(lambda d: d.find_element(By.XPATH, '/html/body/div[2]/div/header/div[3]/div/div/div[2]/div[1]')) + zip_button = driver.find_element(By.XPATH, '/html/body/div[2]/div/header/div[3]/div/div/div[2]/div[1]') + # print(f"{zip_button:}") + zip_button.click() + # time.sleep(1) + + WebDriverWait(driver, 2).until(lambda d: d.find_element(By.XPATH, '//div/label/following-sibling::input')) + zip_input = driver.find_element(By.XPATH, '//div/label/following-sibling::input') + # print(f"{zip_input:}") + zip_input.click() + # print("clearing zip_input") + zip_input.send_keys("\b\b\b\b\b\b\b\b\b\b") + for i in range(1,10): + zip_input.send_keys(Keys.DELETE) + # print("sending zip code") + zip_input.send_keys(zip_code) + + WebDriverWait(driver, 2).until(lambda d: d.find_element(By.XPATH, "//button[text() = 'Confirm']")) + check_button = driver.find_element(By.XPATH, "//button[text() = 'Confirm']") + # print(f"{check_button:}") + check_button.click() + # time.sleep(2) + break + except Exception as e: + print(f"Exception when changing zip code: {e}, trying to close modal dialogs") + close_modals() + + # try: + # time.sleep(2) + # # Clear any notice + # notice_close = driver.find_element(By.XPATH, "/html/body/div[3]/div/div[2]/div/div[2]/div/div/div[1]/div[2]/button") + # print(f"notice_close = {notice_close}") + # notice_close.click() + # time.sleep(2) + # except: + # pass + try: try: # time.sleep(2)