def validate_cart_page(context, quantity, wanted, options): home_page = Singleton.getInstance(context, HomePage) expected_price = context.browser.find_element( By.ID, home_page.locators['expected_price']).text quantity_selected = context.browser.find_element_by_xpath( "//select[@name='quantity']/option[@value='" + quantity + "']").text option_selected = context.browser.find_element_by_xpath( "//*[contains(text(), '" + options + "')]").text click_on_cart = context.browser.find_element( By.ID, home_page.locators['add_cart_button']) click_on_cart.click() continue_to_cart = context.browser.find_element( By.ID, home_page.locators['continue_to_cart']) continue_to_cart.click() actual_price = context.browser.find_element( By.XPATH, home_page.locators['actual_price']).text actual_quantity = context.browser.find_element_by_xpath( "//*[contains(text(), '(" + quantity + "')]").text if (int(quantity) > 1): actual_price = float( actual_price.replace('R$', '').replace('.', '').replace(',', '.')) expected_price = expected_price.replace('R$', '').replace('.', '').replace( ',', '.') expected_price = float(expected_price) * int(quantity) assert_equals(expected_price, actual_price) if (actual_quantity != quantity_selected or option_selected != " "): pass else: message = "The test failed. The quantity expected is no the same in the cart."
def current_page_should_have_an_error_message(context, message): login_page = Singleton.getInstance(context, LoginPage) expected_message = login_page.datapool_read(login_page, SYSTEM_MESSAGES,'login_user', message) element_message = context.browser.find_elements(By.CLASS_NAME, login_page.locators['alert_message']) current_message = element_message[0].text + element_message[1].text if current_message == expected_message : pass else: message = "The alert threw wrong message on the login screen. It was expected the '"+expected_message+"' and was obtained '"+current_message+"'." raise Exception(message)
def click_on_sign_in(context, product): home_page = Singleton.getInstance(context, HomePage) cart_count = context.browser.find_element( By.ID, home_page.locators['cart_count']).text if (int(cart_count) > 0): click_on_cart_icon = context.browser.find_element( By.ID, home_page.locators['cart_icon']).click() remove_from_cart(context) go_to_home = context.browser.find_element( By.ID, home_page.locators['home_page_icon']).click() search_field = context.browser.find_element( By.XPATH, home_page.locators['search_field']) search_field.send_keys(product, Keys.ENTER)
def validate_empty_cart(context, message): home_page = Singleton.getInstance(context, HomePage) expected_message = home_page.datapool_read(home_page, SYSTEM_MESSAGES, 'cart_messages', message) time.sleep(1) current_message = context.browser.find_element_by_xpath( "//*[contains(text(), '" + expected_message + "')]").text # New message comparison needed because amazon changes the cart empty alert alternative_message = "Seu carrinho de compras está vazio." if (current_message == expected_message or alternative_message == expected_message): pass else: message = "The page threw wrong message on the cart screen. It was expected the '" + expected_message + "' and was obtained '" + current_message + "'." raise Exception(message)
def click_on_sign_in(context): login_page = Singleton.getInstance(context,LoginPage) sign_in_button = context.browser.find_element(By.CSS_SELECTOR, login_page.locators['sign_in_button']) sign_in_button.click() time.sleep(2) # For captcha you will need to enter the information manually. if ("Insira os caracteres que está vendo" in context.browser.page_source): fill_in_the_field_password(context, context.credential) WebDriverWait(context.browser, 100).until(EC.invisibility_of_element((By.CSS_SELECTOR, '#auth-captcha-image'))) # Script to automate first login verification. text= "Verificação necessária" if (text in context.browser.page_source): click_on_continue(context) verification_number = run_gmail(context) WebDriverWait(context.browser, 100).until(EC.invisibility_of_element((By.CSS_SELECTOR, '#auth-captcha-image'))) context.browser.find_element(By.CSS_SELECTOR, "[name='code']").send_keys(verification_number) context.browser.find_element(By.CSS_SELECTOR, "#a-autoid-0").click() time.sleep(5)
def select_product(context, wanted): home_page = Singleton.getInstance(context, HomePage) select_product = context.browser.find_element_by_xpath( "//*[contains(text(), '" + wanted + "')]") select_product.click()
def validate_result_page(context, products): home_page = Singleton.getInstance(context, HomePage) if (products in context.browser.page_source): pass else: message = "Test Failed. The product searched not appear on the result page."
def remove_from_cart(context): home_page = Singleton.getInstance(context, HomePage) context.browser.find_element(By.CSS_SELECTOR, home_page.locators['delete_item']).click()
def fill_in_the_field_a_password(context, credential, password): login_page = Singleton.getInstance(context,LoginPage) pwd = login_page.datapool_read(login_page, DATA_ACCESS,credential, password) password_field = context.browser.find_element(By.CSS_SELECTOR, login_page.locators['password_field']) password_field.clear() password_field.send_keys(pwd)
def fill_in_the_field_an_username(context, credential, user): login_page = Singleton.getInstance(context,LoginPage) user = login_page.datapool_read(login_page, DATA_ACCESS, credential, user) username_field = context.browser.find_element(By.CSS_SELECTOR, login_page.locators['username_field']) username_field.clear() username_field.send_keys(user)
def click_on_continue(context): login_page = Singleton.getInstance(context,LoginPage) continue_button = context.browser.find_element(By.CSS_SELECTOR, login_page.locators['continue_button']) continue_button.click()
def navigate_to_the_amazon_login(context): home_page = Singleton.getInstance(context,HomePage) context.browser.get(home_page.project_url) login_button = context.browser.find_element(By.XPATH, home_page.locators['login']) login_button.click()