test_saucedemo.py 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. import logging as log
  2. import pytest
  3. from selenium import webdriver
  4. from selenium.webdriver.common.by import By
  5. from selenium.webdriver.firefox.options import Options
  6. import time
  7. from selenium.webdriver.support.ui import WebDriverWait
  8. from selenium.webdriver.support import expected_conditions as EC
  9. from selenium.common.exceptions import TimeoutException
  10. debug = False
  11. def slip(secondes):
  12. if debug:
  13. time.sleep(secondes)
  14. def element_visible_actif(elem):
  15. assert elem.is_displayed()
  16. assert elem.is_enabled()
  17. def writeInInput(inputElement, text):
  18. assert inputElement.is_displayed(), "Le champ texte n'est pas affiché"
  19. assert inputElement.is_enabled(), "Le champ texte n'est pas activé"
  20. inputElement.clear()
  21. inputElement.send_keys(text)
  22. @pytest.mark.skip("Je veux pas le faire")
  23. def test_loginOK():
  24. log.info("Test du Login avec succès")
  25. options = webdriver.FirefoxOptions()
  26. options.add_argument('--headless')
  27. driver = webdriver.Firefox(options=options)
  28. driver.get("https://www.saucedemo.com/")
  29. assert driver.current_url == "https://www.saucedemo.com/", "Nous ne somme pas sur la bonne page"
  30. username = driver.find_element(By.ID,"user-name")
  31. password = driver.find_element(By.ID,"password")
  32. login = driver.find_element(By.ID, "login-button")
  33. writeInInput(inputElement=username, text="standard_user")
  34. writeInInput(password, text="secret_sauce")
  35. login.click()
  36. assert driver.current_url == "https://www.saucedemo.com/inventory.html", "Nous ne somme pas sur la bonne page"
  37. driver.quit()
  38. @pytest.mark.skip("JE VEUX PAS LE FAIRE")
  39. def test_login_KO_saucedemo():
  40. options = webdriver.FirefoxOptions()
  41. options.add_argument('--headless')
  42. driver = webdriver.Firefox(options=options)
  43. url_sauce_demo="https://www.saucedemo.com/"
  44. titre_page="Swag Labs"
  45. driver.get(url_sauce_demo)
  46. log.info("Le titre de la page" + driver.title)
  47. log.info("L'URL de la page " + driver.current_url)
  48. assert driver.current_url==url_sauce_demo, "L'url de la page ouverte ("+ driver.current_url+") n'est pas égal à "+url_sauce_demo
  49. assert driver.title==titre_page, "Le titre de la page ("+driver.title+") n'est pas égal à " + titre_page
  50. champ_username = driver.find_element(By.XPATH,'//*[@id="user-name"]')
  51. log.info(champ_username)
  52. champ_username.send_keys("user565")
  53. log.info("texte du champ username"+champ_username.text)
  54. log.info("L'attribut du champ username est "+ champ_username.get_attribute("placeholder") )
  55. assert champ_username.get_attribute("value")!="standard_user"
  56. champ_mdp = driver.find_element(By.CSS_SELECTOR,'#password')
  57. champ_mdp.send_keys("password")
  58. # champ_mdp.send_keys(Keys.RETURN)
  59. button_login = driver.find_element(By.ID,"login-button")
  60. button_login.click()
  61. assert driver.current_url==url_sauce_demo, "l'url de la page ouverte ("+ driver.current_url + ") n'est pas égal à " + url_sauce_demo
  62. message_erreur = driver.find_element(By.CSS_SELECTOR, "[data-test=error]")
  63. assert message_erreur.is_displayed(),"Le message d'erreur n'est pas affiché"
  64. assert message_erreur.text == "Epic sadface: Username and password do not match any user in this service"
  65. slip(5)
  66. driver.quit()
  67. @pytest.mark.skip("JE VEUX PAS LE FAIRE")
  68. def test_login_OK_logout_saucedemo():
  69. options = webdriver.FirefoxOptions()
  70. options.add_argument('--headless')
  71. driver = webdriver.Firefox(options=options)
  72. #driver.implicitly_wait(15)
  73. wait = WebDriverWait(driver,15)
  74. url_sauce_demo="https://www.saucedemo.com/"
  75. titre_page="Swag Labs"
  76. driver.get(url_sauce_demo)
  77. log.info("Le titre de la page" + driver.title)
  78. log.info("L'URL de la page " + driver.current_url)
  79. assert driver.current_url==url_sauce_demo, "L'url de la page ouverte ("+ driver.current_url+") n'est pas égal à "+url_sauce_demo
  80. assert driver.title==titre_page, "Le titre de la page ("+driver.title+") n'est pas égal à " + titre_page
  81. champ_username = driver.find_element(By.XPATH,'//*[@id="user-name"]')
  82. log.info(champ_username)
  83. champ_username.send_keys("standard_user")
  84. log.info("texte du champ username"+champ_username.text)
  85. log.info("L'attribut du champ username est "+ champ_username.get_attribute("placeholder") )
  86. assert champ_username.get_attribute("value")=="standard_user"
  87. champ_mdp = driver.find_element(By.CSS_SELECTOR,'#password')
  88. champ_mdp.send_keys("secret_sauce")
  89. # champ_mdp.send_keys(Keys.RETURN)
  90. button_login = driver.find_element(By.ID,"login-button")
  91. element_visible_actif(button_login)
  92. button_login.click()
  93. assert driver.current_url=="https://www.saucedemo.com/inventory.html", "l'url de la page ouverte ("+ driver.current_url + ") n'est pas égal à https://www.saucedemo.com/inventory.html"
  94. button_burger= driver.find_element(By.ID,"react-burger-menu-btn")
  95. element_visible_actif(button_burger)
  96. button_burger.click()
  97. #button_logout= driver.find_element(By.ID,"logout_sidebar_link")
  98. try:
  99. button_logout=wait.until(EC.element_to_be_clickable((By.ID,"logout_sidebar_link")))
  100. except TimeoutException:
  101. log.error("Erreur dans l'attennte explicite")
  102. #element_visible_actif(button_logout) #ça fonctionne pas très bien
  103. button_logout.click()
  104. assert driver.current_url==url_sauce_demo, "L'url de la page ouverte ("+ driver.current_url+") n'est pas égal à "+url_sauce_demo
  105. slip(2)
  106. driver.quit()
  107. #@pytest.mark.skip("JE VEUX PAS LE FAIRE")
  108. def test_ajout_panier():
  109. options = webdriver.FirefoxOptions()
  110. options.add_argument('--headless')
  111. driver = webdriver.Firefox(options=options)
  112. #driver=webdriver.Chrome()
  113. url_sauce_demo="https://www.saucedemo.com/"
  114. driver.get(url_sauce_demo)
  115. champ_username = driver.find_element(By.XPATH,'//*[@id="user-name"]')
  116. log.info(champ_username)
  117. champ_username.send_keys("standard_user")
  118. log.info("texte du champ username"+champ_username.text)
  119. log.info("L'attribut du champ username est "+ champ_username.get_attribute("placeholder") )
  120. assert champ_username.get_attribute("value")=="standard_user"
  121. champ_mdp = driver.find_element(By.CSS_SELECTOR,'#password')
  122. champ_mdp.send_keys("secret_sauce")
  123. # champ_mdp.send_keys(Keys.RETURN)
  124. button_login = driver.find_element(By.ID,"login-button")
  125. element_visible_actif(button_login)
  126. button_login.click()
  127. assert driver.current_url=="https://www.saucedemo.com/inventory.html", "l'url de la page ouverte ("+ driver.current_url + ") n'est pas égal à https://www.saucedemo.com/inventory.html"
  128. button_add=driver.find_element(By.ID,"add-to-cart-sauce-labs-backpack")
  129. button_add.click()
  130. button_panier=driver.find_element(By.CLASS_NAME,"shopping_cart_link")
  131. button_panier.click()
  132. slip(2)
  133. driver.quit()
  134. def test_detail_article():
  135. #options = webdriver.FirefoxOptions()
  136. #options.add_argument('--headless')
  137. #driver = webdriver.Firefox(options=options)
  138. driver=webdriver.Chrome()
  139. url_sauce_demo="https://www.saucedemo.com/"
  140. #Navigation sur le site:
  141. driver.get(url_sauce_demo)
  142. #Se logger:
  143. champ_username = driver.find_element(By.XPATH,'//*[@id="user-name"]')
  144. log.info(champ_username)
  145. champ_username.send_keys("standard_user")
  146. log.info("texte du champ username"+champ_username.text)
  147. log.info("L'attribut du champ username est "+ champ_username.get_attribute("placeholder") )
  148. assert champ_username.get_attribute("value")=="standard_user"
  149. champ_mdp = driver.find_element(By.CSS_SELECTOR,'#password')
  150. champ_mdp.send_keys("secret_sauce")
  151. #champ_mdp.send_keys(Keys.RETURN)
  152. button_login = driver.find_element(By.ID,"login-button")
  153. element_visible_actif(button_login)
  154. button_login.click()
  155. assert driver.current_url=="https://www.saucedemo.com/inventory.html", "l'url de la page ouverte ("+ driver.current_url + ") n'est pas égal à https://www.saucedemo.com/inventory.html"
  156. button_add=driver.find_element(By.XPATH,'//*[@id="add-to-cart-sauce-labs-bolt-t-shirt"]')
  157. button_add.click()
  158. button_panier=driver.find_element(By.CLASS_NAME,"shopping_cart_link")
  159. button_panier.click()
  160. # vérifier si le panier s'ouvre
  161. if "cart" in driver.current_url:
  162. print("Cart button functionality is working.")
  163. else:
  164. print("There was an issue with the cart button.")
  165. # Vérifier si on a le bon article dans le panier
  166. correct_item_name = "Sauce Labs Bolt T-shirt"
  167. item_in_cart = driver.find_element(By.XPATH, f"//div[@class='inventory_item_name']")
  168. if item_in_cart:
  169. print(f"The correct item '{correct_item_name}' is in the cart.")
  170. else:
  171. print(f"The correct item '{correct_item_name}' is NOT in the cart.")
  172. slip(2)
  173. driver.quit()