##### IMPORT import pytest import logging as log import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.ui import Select from selenium.webdriver.firefox.options import Options from test_saucedemo import writeInInput import os class TestSauceDemo: def is_windows(self): # oups res = False if os.name == "nt": res == True return res def writeInInput(self, inputElement, text): assert inputElement.is_displayed(), "Le champ texte n'est pas affiché" assert inputElement.is_enabled(), "Le champ texte n'est pas activé" inputElement.clear() inputElement.send_keys(text) def setup_method(self, method): log.info("Methode de SETUP AVANT CHAQUE TEST") if self.is_windows(): self.driver = webdriver.Firefox() else: options = webdriver.FirefoxOptions() options.add_argument("--headless") self.driver = webdriver.Firefox(options=options) self.driver.get("http://www.saucedemo.com") assert ( self.driver.current_url == "https://www.saucedemo.com/" ), "Nous ne somme pas sur la bonne page" def teardown_method(self, method): log.info("Methode de TEARDOWN APRES CHAQUE TEST") self.driver.quit() def login(self): username = self.driver.find_element(By.ID, "user-name") password = self.driver.find_element(By.ID, "password") login = self.driver.find_element(By.ID, "login-button") writeInInput(inputElement=username, text="standard_user") writeInInput(password, text="secret_sauce") login.click() def logout(self): burger = self.driver.find_element(By.ID, "react-burger-menu-btn") burger.click() logout = self.driver.find_element(By.ID, "logout_sidebar_link") logout.click() @pytest.mark.skip("") def test_saucedemo_boutenbout(self): self.login() self.logout() def add_item(self, item): self.driver.find_element(By.ID, f"add-to-cart-sauce-labs-{item}").click() ##### MATTHIEU def go_to_checkout(self): checkout = self.driver.find_element(By.CSS_SELECTOR, "#checkout") checkout.click() # @pytest.mark.skip("") def test_affichage_Checkout(self): log.info("Test de la redirection sur la page de Checkout") # connexion Swag Labs self.login() # ajout "Sauce Labs Bike Light" au panier -- A changer si Tiff implémente une fonction pour le faire item_lamp = self.driver.find_element(By.ID, "add-to-cart-sauce-labs-bike-light") item_lamp.click() # affichage panier -- A changer si Tiff implémente une fonction pour le faire panier_btn = self.driver.find_element(By.ID, "shopping_cart_container") panier_btn.click() # redirection vers la page de checkout self.go_to_checkout() assert ( self.driver.current_url == "https://www.saucedemo.com/checkout-step-one.html" ), "Nous ne somme pas sur la bonne page" ##### TIFF def test_add_item(self): self.login() sauce_labs_item = self.add_item("backpack") shopping_container = self.driver.find_element(By.ID, "shopping_cart_container") assert ( sauce_labs_item != shopping_container.text ), f"L'item {sauce_labs_item} ne correspond pas à l'item {shopping_container.text} présent dans le panier." log.info( f"L'item : {shopping_container.text} a été ajouté et l'item : {sauce_labs_item} était attendu" )