test_saucedemo.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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 = True
  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()