def click_on_i_have_exported_in_the_last_12_months(driver: WebDriver): click_element = find_element( driver, find_selector_by_name(SELECTORS, "i have exported in last 12 months")) click_element.click() save = find_element(driver, find_selector_by_name(SELECTORS, "save")) save.click()
def search(driver: WebDriver, phrase: str): search_input = find_element(driver, find_selector_by_name(SELECTORS, "search box")) search_button = find_element( driver, find_selector_by_name(SELECTORS, "search button") ) search_input.clear() search_input.send_keys(phrase) search_button.click()
def fill_out_country(driver: WebDriver, country: str): try: time.sleep(1) skip_link = find_element( driver, find_selector_by_name(SELECTORS, "skipwalkthrough") ) skip_link.click() except: pass try: time.sleep(1) if driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").is_displayed(): driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").click() except: pass try: if driver.find_element_by_xpath("//button[contains(text(),'Got it')]").is_displayed(): driver.find_element_by_xpath("//button[contains(text(),'Got it')]").click() except: pass # country time.sleep(1) country_btn = find_element( driver, find_selector_by_name(SELECTORS, "country-btn") ) country_btn.click() try: time.sleep(1) if driver.find_element_by_css_selector("body > div:nth-child(14) > div > div > button").is_displayed(): driver.find_element_by_css_selector("body > div:nth-child(14) > div > div > button").click() except: pass time.sleep(1) if 0 == len(country): path_random_country_element = "body > div:nth-child(13) > div > div > div > div > div > div.only-desktop > div.suggested-markets > ul > button:nth-child(" + str( random.randint(1, 5)) + ")" driver.find_element_by_css_selector(path_random_country_element).click() else: try: if driver.find_element_by_xpath("//button[contains(text(),'Got it')]").is_displayed(): driver.find_element_by_xpath("//button[contains(text(),'Got it')]").click() except: pass driver.find_element_by_css_selector("#search-input").clear() driver.find_element_by_css_selector("#search-input").send_keys(country) buttons_elements = driver.find_elements_by_tag_name("button") # logging.debug(buttons_elements) for button_element in buttons_elements: # logging.debug(button_element.text) if button_element.text == country.lower(): button_element.click() # time.sleep(5) break
def search_select_save_random_next(driver: WebDriver): time.sleep(5) counter = 0 while True: try: driver.implicitly_wait(1) logging.debug('Counter -> ' + str(counter)) #//body/div[7]/div/div/form/div[2]/div/span/div/section[1]/div/div/div parent_div_element = driver.find_element_by_xpath( "//body/div[4]/div/div/form/div[2]/div/span/div/section[1]/div/div/div" ) logging.debug(parent_div_element) label_elements = parent_div_element.find_elements_by_tag_name( "label") logging.debug('number of labels - ' + str(len(label_elements))) radio_elements = [] for label_element in label_elements: try: logging.debug(label_element) radio_ele = label_element.find_element_by_tag_name("input") radio_elements.append(radio_ele) except Exception as ex: #logging.error('Érror selecting correct label -> ' + str(ex)) pass random_label_index = random.randint(0, len(radio_elements) - 1) logging.debug('Index of radio buttons to be selected - ' + str(random_label_index)) if random_label_index <= len(radio_elements): # label_elements[random_label_index] for index, random_radio_element in enumerate(radio_elements): if random_label_index == index: logging.debug('Selecting Index of radio buttons - ' + str(index)) random_radio_element.click() try: driver.implicitly_wait(1) search_next_btn = find_element( driver, find_selector_by_name(SELECTORS, "search next button")) search_next_btn.click() except Exception as ex: driver.implicitly_wait(1) save_product_btn = find_element( driver, find_selector_by_name(SELECTORS, "save product")) save_product_btn.click() break counter += 1 if counter >= 20: break except Exception as ex: logging.error(str(ex)) break
def should_see_office_details(driver: WebDriver, trade_office: str, city: str): office_selector = find_selector_by_name(SELECTORS, "office name") office = find_element(driver, office_selector) error = f"Expected to find details for '{trade_office}' but got {office.text}" assert trade_office.lower() in office.text.lower(), error address_selector = find_selector_by_name(SELECTORS, "office address") address = find_element(driver, address_selector) error = (f"Expected to find details for trade office in '{city}' but got " f"{address.text}") assert city.lower() in address.text.lower(), error
def search_again_top_bottom(driver: WebDriver): try: search_again_top_btn = find_element( driver, find_selector_by_name(SELECTORS, "top search again")) search_again_top_btn.click() except: try: search_again_btm_btn = find_element( driver, find_selector_by_name(SELECTORS, "bottom search again")) search_again_btm_btn.click() except: pass
def fill_out_product(driver: WebDriver, products: str): product_btn = find_element( driver, find_selector_by_name(SELECTORS, "product-btn") ) product_btn.click() if driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").is_displayed(): driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").click() driver.find_element_by_xpath( "//body/div[2]/nav/span[2]/span/button") #"//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/div[1]/input[1]").send_keys(products) driver.find_element_by_xpath( "//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/button[1]/i[1]").click() while True: find_and_select_random_radio_and_click_next(driver) time.sleep(1) # seconds try: if driver.find_element_by_xpath("//button[contains(text(),'Save product')]").is_displayed(): driver.find_element_by_xpath("//button[contains(text(),'Save product')]").click() break else: continue except: pass
def validate_entered_text(driver: WebDriver, element_name: str): text_element = find_element( driver, find_selector_by_name(SELECTORS, element_name) ) if "Automated tests" in text_element.text: return True return False
def should_see_it_on(driver: WebDriver, page: ModuleType): take_screenshot(driver, NAME + page.NAME) selector = find_selector_by_name(page.SELECTORS, "language selector") language_selector = find_element(driver, selector, element_name="language selector") with assertion_msg(f"Language selector is not visible on {driver.current_url}"): assert language_selector.is_displayed() logging.debug(f"Language selector is visible on {driver.current_url}")
def open(driver: WebDriver, page: ModuleType, *, with_keyboard: bool = False): selector = find_selector_by_name(page.SELECTORS, "language selector") language_selector = find_element(driver, selector, element_name="language selector") if with_keyboard: language_selector.send_keys(Keys.ENTER) else: language_selector.click()
def enter_value(driver: WebDriver, element_name: str): value_element = find_element( driver, find_selector_by_name(SELECTORS, element_name) ) value_element.clear() value_element.send_keys("5000") time.sleep(2)
def confirmation_code(driver: WebDriver, email: str, password: str): time.sleep(2) logging.debug("email: " + email) logging.debug("password: "******"code": confirmation_code} else: raise Exception("Failed to fetch the confirmation code from User email.") else: raise Exception("Failed to fetch the confirmation code from User email.") confirmation_code_selectors = SELECTORS["sign up"] fill_out_input_fields(driver, confirmation_code_selectors, details) fill_input_list = find_element(driver, find_selector_by_name(SELECTORS, "submit")) fill_input_list.click() time.sleep(2) driver.find_element_by_xpath("//a[@id='signup-modal-submit-success']").click()
def fill_out_country(driver: WebDriver, country: str): try: time.sleep(1) skip_link = find_element( driver, find_selector_by_name(SELECTORS, "skipwalkthrough") ) skip_link.click() except: pass try: time.sleep(1) if driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").is_displayed(): driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").click() if driver.find_element_by_xpath("//button[contains(text(),'Got it')]").is_displayed(): driver.find_element_by_xpath("//button[contains(text(),'Got it')]").click() except: pass # country time.sleep(1) country_btn = find_element( driver, find_selector_by_name(SELECTORS, "country-btn") ) country_btn.click() try: time.sleep(1) if driver.find_element_by_css_selector("body > div:nth-child(14) > div > div > button").is_displayed(): driver.find_element_by_css_selector("body > div:nth-child(14) > div > div > button").click() except: pass time.sleep(1) if 0 == len(country): path_random_country_element = "body > div:nth-child(13) > div > div > div > div > div > div.only-desktop > div.suggested-markets > ul > button:nth-child(" + str( random.randint(1, 5)) + ")" driver.find_element_by_css_selector(path_random_country_element).click() else: driver.find_element_by_xpath( "//body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[4]/div[1]/div[1]/div[1]/input").send_keys( country) country_name_btn_xpath = "//button[contains(text(),'" + country + "')]" driver.find_element_by_xpath(country_name_btn_xpath).click() time.sleep(1) driver.find_element_by_xpath("//a[@id='page-tour-skip']").click()
def fill_out_email_address(driver: WebDriver, details: dict): email_address_selectors = SELECTORS["login"] logging.debug(email_address_selectors) logging.debug(details) fill_out_input_fields(driver, email_address_selectors, details) fill_input_list = find_element(driver, find_selector_by_name(SELECTORS, "login button")) fill_input_list.click() driver.implicitly_wait(000)
def search_select_save_random_next(driver: WebDriver): counter = 0 while True: if counter >= 50: break # logging.debug("Counter: " + str(counter)) driver.implicitly_wait(1) # check for save button save_btn_found = False try: save_product_btn = driver.find_element_by_xpath( "//body/div[4]/div/div/form/div[2]/div/span/div/section[1]/div[2]/button" ) save_btn_found = True except Exception as ex: logging.debug("save button not found.Exception: " + str(ex)) if save_btn_found == True: logging.debug("Save button found") save_product_btn.click() return # look for div's and radio buttons # try: parent_1_div_element = driver.find_element_by_xpath( "//body/div[4]/div/div/form/div[2]/div/span/div/section/div") # # "/html/body/div[7]/div/div/form/div[2]/div/span/div/section/div") # ("interaction grid m-v-xs") # except Exception as e: # parent_1_div_element = driver.find_element_by_xpath("//body/div[7]/div[1]/div[1]/form[1]/div[2]/div[1]/span[1]/div[1]/section[1]/div[1]")#"interaction grid m-v-xs") child_1_div_element = parent_1_div_element.find_element_by_tag_name( "div") # ("c-fullwidth") main_div_element = child_1_div_element.find_element_by_tag_name("div") # radio button labels label_elements = main_div_element.find_elements_by_tag_name("label") radio_elements = [] for label_element in label_elements: radio_ele = None try: radio_ele = label_element.find_element_by_tag_name("input") except Exception as e: continue radio_elements.append(radio_ele) logging.debug('number of labels - ' + str(len(radio_elements))) random_label_index = random.randint(0, len(radio_elements) - 1) logging.debug('Index of radio buttons to be selected -> ' + str(random_label_index)) radio_btn_selected = radio_elements[random_label_index] radio_btn_selected.click() driver.implicitly_wait(1) search_next_btn = find_element( driver, find_selector_by_name(SELECTORS, "search next button")) search_next_btn.click() counter += 1
def navigate_through_links_with_keyboard(driver: WebDriver, page: ModuleType): selector = find_selector_by_name(page.SELECTORS, "language selector") language_selector = find_element(driver, selector, element_name="language selector") options = language_selector.find_elements_by_tag_name("option") for _ in options: language_selector.send_keys(Keys.DOWN) for _ in options: language_selector.send_keys(Keys.UP) with assertion_msg(f"Language selector is not visible on {driver.current_url}"): assert language_selector.is_displayed()
def select_product_search_again_top_bottom(driver: WebDriver, product_name: str): product_btn = find_element( driver, find_selector_by_name(SELECTORS, "product-btn") ) product_btn.click() search_again_top_bottom(driver) driver.implicitly_wait(1) driver.find_element_by_xpath("//body/div[4]/div/div/form/div[2]/div/div/div[2]/label/div/input").clear() driver.find_element_by_xpath("//body/div[4]/div/div/form/div[2]/div/div/div[2]/label/div/input").send_keys(product_name) driver.find_element_by_xpath("//body/div[4]/div/div/form/div[2]/div/div/div[2]/button").click()
def generic_click_on_random_element(context: Context, actor_alias: str, elements_name: str): page = get_last_visited_page(context, actor_alias) selector = find_selector_by_name(page.SELECTORS, elements_name) elements = find_elements(context.driver, selector) element = random.choice(elements) href = f" → {element.get_attribute('href')}" if element.tag_name == "a" else "" logging.debug(f"Will click on: '{element.text.strip()}'{href}") scroll_to(context.driver, element) with wait_for_page_load_after_action(context.driver, timeout=10): with try_alternative_click_on_exception(context.driver, element): element.click()
def fill_out_products(driver: WebDriver, products: str): # details_dict = {"emailaddress": products} # product_selectors = SELECTORS["dashboard"] # fill_out_input_fields(driver, product_selectors, details_dict) product_btn = find_element( driver, find_selector_by_name(SELECTORS, "product-btn") ) product_btn.click() driver.implicitly_wait(1) driver.find_element_by_xpath("//body/div[4]/div/div/form/div[2]/div/div/div[2]/label/div/input").clear() driver.find_element_by_xpath("//body/div[4]/div/div/form/div[2]/div/div/div[2]/label/div/input").send_keys(products) driver.find_element_by_xpath("//body/div[4]/div/div/form/div[2]/div/div/div[2]/button").click() time.sleep(5)
def fill_out_product(driver: WebDriver, products: str): product_btn = find_element( driver, find_selector_by_name(SELECTORS, "product-btn") ) product_btn.click() try: if driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").is_displayed(): driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").click() except: pass try: product_input_text = driver.find_element_by_xpath("//input[@id='input-commodity-name']").text logging.debug("product_input_text -> " + product_input_text) for i in range(len(product_input_text)): driver.find_element_by_xpath( "//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/div[1]/input[1]").sendKeys( Keys.BACKSPACE) driver.find_element_by_xpath( "//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/div[1]/input[1]").send_keys("") driver.find_element_by_xpath( "//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/div[1]/input[1]").send_keys(products) driver.find_element_by_xpath( "//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/button[1]/i[1]").click() while True: find_and_select_random_radio_and_click_next(driver) time.sleep(1) # seconds try: if driver.find_element_by_xpath("//button[contains(text(),'Save product')]").is_displayed(): driver.find_element_by_xpath("//button[contains(text(),'Save product')]").click() break else: continue except: pass except Exception as ex: logging.debug("Exception in product input " + str(ex)) driver.find_element_by_css_selector("#input-commodity-name").send_keys(products) driver.find_element_by_xpath("/html/body/div[3]/div/div/form/div[2]/div/div/section/div/button").click()
def find_and_click(driver: WebDriver, *, element_selector_name: str): find_and_click = find_element( driver, find_selector_by_name(SELECTORS, element_selector_name) ) find_and_click.click()
def enter_text(driver: WebDriver, element_name: str): text_element = find_element( driver, find_selector_by_name(SELECTORS, element_name) ) text_element.clear() text_element.send_keys("Automated tests")
def check_lesson_complete_yes(driver: WebDriver, element_selector_name: str): check_yes_link = find_element( driver, find_selector_by_name(SELECTORS, element_selector_name)) check_yes_link.click()
def find_and_click_change_link(driver: WebDriver, element_selector_name: str): change_link = find_element( driver, find_selector_by_name(SELECTORS, element_selector_name)) change_link.click()
def fill_out_email_address(driver: WebDriver, details: dict): email_address_selectors = SELECTORS["forgotten password"] fill_out_input_fields(driver, email_address_selectors, details) reset_password_btn = find_element( driver, find_selector_by_name(SELECTORS, "resetmypassword")) reset_password_btn.click()
def click_forgotten_password(driver: WebDriver, element_name: str): forgotten_password = find_element( driver, find_selector_by_name(SELECTORS, element_name)) forgotten_password.click()
def click_avatar(driver: WebDriver): avatar_btn = find_element( driver, find_selector_by_name(SELECTORS, "avatar") ) avatar_btn.click()
def click_signout(driver: WebDriver): signout_link = find_element( driver, find_selector_by_name(SELECTORS, "sign out") ) signout_link.click()
def click_skip_walk_through(driver: WebDriver): skip_link = find_element( driver, find_selector_by_name(SELECTORS, "skipwalkthrough") ) skip_link.click()
def fill_out_product(driver: WebDriver, product_name: str): product_btn = find_element( driver, find_selector_by_name(SELECTORS, "add a product")) product_btn.click() # search_again_top_bottom(driver) driver.implicitly_wait(1) driver.find_element_by_xpath( "//body/div[9]/div/div/form/div[2]/div/div/div[2]/label/div/input" ).clear() driver.find_element_by_xpath( "//body/div[9]/div/div/form/div[2]/div/div/div[2]/label/div/input" ).send_keys(product_name) driver.find_element_by_xpath( "//body/div[9]/div/div/form/div[2]/div/div/div[2]/button/i").click() # Inorder to copy this code, 3 elements to be copied # as per the element path on the browser # save_product_btn, parent_1_div_element, search next button # def search_select_save_radio(driver: WebDriver): counter = 0 while True: if counter >= 50: break # logging.debug("Counter: " + str(counter)) driver.implicitly_wait(1) # check for save button save_btn_found = False try: save_product_btn = driver.find_element_by_xpath( "//body/div[9]/div/div/form/div[2]/div/span/div/section[1]/div[2]/button" ) save_btn_found = True except Exception as ex: logging.debug("save button not found.Exception: " + str(ex)) if save_btn_found == True: logging.debug("Save button found") save_product_btn.click() return # look for div's and radio buttons parent_1_div_element = driver.find_element_by_xpath( "//body/div[9]/div/div/form/div[2]/div/span/div/section[1]/div" ) # ("interaction grid m-v-xs") child_1_div_element = parent_1_div_element.find_element_by_tag_name( "div") # ("c-fullwidth") main_div_element = child_1_div_element.find_element_by_tag_name( "div") # "m-b-xs" # radio button labels label_elements = main_div_element.find_elements_by_tag_name("label") radio_elements = [] for label_element in label_elements: radio_ele = None try: radio_ele = label_element.find_element_by_tag_name("input") except Exception as e: continue radio_elements.append(radio_ele) # logging.debug('number of labels - ' + str(len(radio_elements))) random_label_index = random.randint(0, len(radio_elements) - 1) # logging.debug('Index of radio buttons to be selected -> ' + str(random_label_index)) radio_btn_selected = radio_elements[random_label_index] radio_btn_selected.click() driver.implicitly_wait(1) search_next_btn = find_element( driver, find_selector_by_name(SELECTORS, "search next button")) search_next_btn.click() counter += 1