test_saucedemo.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. debug = True
  7. def slip(secondes):
  8. if debug:
  9. time.sleep(secondes)
  10. def writeInInput(inputElement, text):
  11. assert inputElement.is_displayed(), "Le champ texte n'est pas affiché"
  12. assert inputElement.is_enabled(), "Le champ texte n'est pas activé"
  13. inputElement.clear()
  14. inputElement.send_keys(text)
  15. @pytest.mark.skip("Je veux pas le faire")
  16. def test_loginOK():
  17. log.info("Test du Login avec succès")
  18. options = webdriver.FirefoxOptions()
  19. options.add_argument('--headless')
  20. driver = webdriver.Firefox(options=options)
  21. driver.get("https://www.saucedemo.com/")
  22. assert driver.current_url == "https://www.saucedemo.com/", "Nous ne somme pas sur la bonne page"
  23. username = driver.find_element(By.ID,"user-name")
  24. password = driver.find_element(By.ID,"password")
  25. login = driver.find_element(By.ID, "login-button")
  26. writeInInput(inputElement=username, text="standard_user")
  27. writeInInput(password, text="secret_sauce")
  28. login.click()
  29. assert driver.current_url == "https://www.saucedemo.com/inventory.html", "Nous ne somme pas sur la bonne page"
  30. driver.quit()
  31. @pytest.mark.skip("JE VEUX PAS LE FAIRE")
  32. def test_login_KO_saucedemo():
  33. driver= webdriver.Chrome()
  34. url_sauce_demo="https://www.saucedemo.com/"
  35. titre_page="Swag Labs"
  36. driver.get(url_sauce_demo)
  37. log.info("Le titre de la page" + driver.title)
  38. log.info("L'URL de la page " + driver.current_url)
  39. assert driver.current_url==url_sauce_demo, "L'url de la page ouverte ("+ driver.current_url+") n'est pas égal à "+url_sauce_demo
  40. assert driver.title==titre_page, "Le titre de la page ("+driver.title+") n'est pas égal à " + titre_page
  41. champ_username = driver.find_element(By.XPATH,'//*[@id="user-name"]')
  42. log.info(champ_username)
  43. champ_username.send_keys("user565")
  44. log.info("texte du champ username"+champ_username.text)
  45. log.info("L'attribut du champ username est "+ champ_username.get_attribute("placeholder") )
  46. assert champ_username.get_attribute("value")!="standard_user"
  47. champ_mdp = driver.find_element(By.CSS_SELECTOR,'#password')
  48. champ_mdp.send_keys("password")
  49. # champ_mdp.send_keys(Keys.RETURN)
  50. button_login = driver.find_element(By.ID,"login-button")
  51. button_login.click()
  52. assert driver.current_url==url_sauce_demo, "l'url de la page ouverte ("+ driver.current_url + ") n'est pas égal à " + url_sauce_demo
  53. message_erreur = driver.find_element(By.CSS_SELECTOR, "[data-test=error]")
  54. assert message_erreur.is_displayed(),"Le message d'erreur n'est pas affiché"
  55. assert message_erreur.text == "Epic sadface: Username and password do not match any user in this service"
  56. slip(5)
  57. driver.quit()
  58. @pytest.mark.skip("JE VEUX PAS LE FAIRE")
  59. def test_login_OK_logout_saucedemo():
  60. driver= webdriver.Chrome()
  61. #driver.implicitly_wait(15)
  62. wait = WebDriverWait(driver,15)
  63. url_sauce_demo="https://www.saucedemo.com/"
  64. titre_page="Swag Labs"
  65. driver.get(url_sauce_demo)
  66. log.info("Le titre de la page" + driver.title)
  67. log.info("L'URL de la page " + driver.current_url)
  68. assert driver.current_url==url_sauce_demo, "L'url de la page ouverte ("+ driver.current_url+") n'est pas égal à "+url_sauce_demo
  69. assert driver.title==titre_page, "Le titre de la page ("+driver.title+") n'est pas égal à " + titre_page
  70. champ_username = driver.find_element(By.XPATH,'//*[@id="user-name"]')
  71. log.info(champ_username)
  72. champ_username.send_keys("standard_user")
  73. log.info("texte du champ username"+champ_username.text)
  74. log.info("L'attribut du champ username est "+ champ_username.get_attribute("placeholder") )
  75. assert champ_username.get_attribute("value")=="standard_user"
  76. champ_mdp = driver.find_element(By.CSS_SELECTOR,'#password')
  77. champ_mdp.send_keys("secret_sauce")
  78. # champ_mdp.send_keys(Keys.RETURN)
  79. button_login = driver.find_element(By.ID,"login-button")
  80. element_visible_actif(button_login)
  81. button_login.click()
  82. 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"
  83. button_burger= driver.find_element(By.ID,"react-burger-menu-btn")
  84. element_visible_actif(button_burger)
  85. button_burger.click()
  86. #button_logout= driver.find_element(By.ID,"logout_sidebar_link")
  87. try:
  88. button_logout=wait.until(EC.element_to_be_clickable((By.ID,"logout_sidebar_link")))
  89. except TimeoutException:
  90. log.error("Erreur dans l'attennte explicite")
  91. #element_visible_actif(button_logout) #ça fonctionne pas très bien
  92. button_logout.click()
  93. assert driver.current_url==url_sauce_demo, "L'url de la page ouverte ("+ driver.current_url+") n'est pas égal à "+url_sauce_demo
  94. slip(2)
  95. driver.quit()