diff --git a/06K_lesson/__pycache__/test_01_form.cpython-313-pytest-8.4.2.pyc b/06K_lesson/__pycache__/test_01_form.cpython-313-pytest-8.4.2.pyc new file mode 100644 index 0000000..8763fea Binary files /dev/null and b/06K_lesson/__pycache__/test_01_form.cpython-313-pytest-8.4.2.pyc differ diff --git a/06K_lesson/__pycache__/test_02_calc.cpython-313-pytest-8.4.2.pyc b/06K_lesson/__pycache__/test_02_calc.cpython-313-pytest-8.4.2.pyc new file mode 100644 index 0000000..0ec1a66 Binary files /dev/null and b/06K_lesson/__pycache__/test_02_calc.cpython-313-pytest-8.4.2.pyc differ diff --git a/06K_lesson/__pycache__/test_03_shop.cpython-313-pytest-8.4.2.pyc b/06K_lesson/__pycache__/test_03_shop.cpython-313-pytest-8.4.2.pyc new file mode 100644 index 0000000..8f91623 Binary files /dev/null and b/06K_lesson/__pycache__/test_03_shop.cpython-313-pytest-8.4.2.pyc differ diff --git a/06K_lesson/pytest.ini b/06K_lesson/pytest.ini new file mode 100644 index 0000000..5428821 --- /dev/null +++ b/06K_lesson/pytest.ini @@ -0,0 +1,7 @@ +[pytest] + +python = test_*.py +markers = + test_calculator: проверка калькулятора + test_form: проверка формы + test_shop \ No newline at end of file diff --git a/06K_lesson/test_01_form.py b/06K_lesson/test_01_form.py new file mode 100644 index 0000000..a141f72 --- /dev/null +++ b/06K_lesson/test_01_form.py @@ -0,0 +1,50 @@ +from selenium import webdriver +from selenium.webdriver.common.by import By + +def test_form_validation(): + driver = webdriver.Edge() + driver.get("https://bonigarcia.dev/selenium-webdriver-java/data-types.html") + + first_name_field = driver.find_element(By.NAME,'first-name') + first_name_field.send_keys("Иван") + + last_name_field = driver.find_element(By.NAME,'last-name') + last_name_field.send_keys("Петров") + + address_field = driver.find_element(By.NAME,'address') + address_field.send_keys("Ленина, 55-3") + + email_field = driver.find_element(By.NAME,'e-mail') + email_field.send_keys("test@skypro.com") + + phone_field = driver.find_element(By.NAME,'phone') + phone_field.send_keys("+7985899998787") + + city_field = driver.find_element(By.NAME,'city') + city_field.send_keys("Москва") + + country_field = driver.find_element(By.NAME,'country') + country_field.send_keys("Россия") + + job_position_field = driver.find_element(By.NAME,'job-position') + job_position_field.send_keys("QA") + + company_field = driver.find_element(By.NAME,'company') + company_field.send_keys("SkyPro") + + submit_button = driver.find_element(By.CSS_SELECTOR, "button[type='submit']") + submit_button.click() + + + pole_z = driver.find_element(By.ID, "zip-code").get_attribute("class") + assert pole_z == "alert py-2 alert-danger" + + + poles = ["#first-name", "#last-name", "#address", "#city", "#country", "#e-mail", "#phone", "#company"] + for pole in poles: + pole_class = driver.find_element(By.CSS_SELECTOR, pole).get_attribute("class") + assert pole_class == "alert py-2 alert-success" + + driver.quit() + + diff --git a/06K_lesson/test_02_calc.py b/06K_lesson/test_02_calc.py new file mode 100644 index 0000000..b9c2f92 --- /dev/null +++ b/06K_lesson/test_02_calc.py @@ -0,0 +1,36 @@ +import pytest +from selenium import webdriver +from selenium.webdriver.chrome.service import Service as ChromeService +from webdriver_manager.chrome import ChromeDriverManager +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC + +@pytest.mark.test_calculator +def test_sum(): + driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) + waiter = WebDriverWait(driver, 47) + + driver.get("https://bonigarcia.dev/selenium-webdriver-java/slow-calculator.html") + delay = driver.find_element(By.CSS_SELECTOR, "#delay") + delay.clear() + delay.send_keys("45") + driver.find_element(By.XPATH, "//span[contains(text(),'7')]").click() + driver.find_element(By.XPATH, "//span[contains(text(),'+')]").click() + driver.find_element(By.XPATH, "//span[contains(text(),'8')]").click() + driver.find_element(By.XPATH, "//span[contains(text(),'=')]").click() + + waiter.until( + EC.text_to_be_present_in_element((By.CSS_SELECTOR, "div[class='screen']"), "15") +) + + + @pytest.mark.test_calculator + @pytest.mark.parametrize('res_in, res_es', [ + (driver.find_element(By.CSS_SELECTOR, "div[class='screen']").get_attribute("innerText"), '15') + ]) + def test_sum(res_in, res_es): + assert res_es == res_in + + + driver.quit() diff --git a/06K_lesson/test_03_shop.py b/06K_lesson/test_03_shop.py new file mode 100644 index 0000000..0ead2f2 --- /dev/null +++ b/06K_lesson/test_03_shop.py @@ -0,0 +1,51 @@ +import pytest +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC + +@pytest.mark.test_shop +def test_shop(): + driver = webdriver.Firefox() + waiter = WebDriverWait(driver, 5) + + driver.get("https://www.saucedemo.com/") + login = driver.find_element(By.CSS_SELECTOR, "#user-name").send_keys("standard_user") + password = driver.find_element(By.CSS_SELECTOR, "#password").send_keys("secret_sauce") + driver.find_element(By.CSS_SELECTOR, "#login-button").click() + waiter.until( + EC.text_to_be_present_in_element((By.CSS_SELECTOR, 'div[class="app_logo"]'), "Swag Labs") + ) + + driver.find_element(By.CSS_SELECTOR, "#add-to-cart-sauce-labs-backpack").click() + driver.find_element(By.CSS_SELECTOR, "#add-to-cart-sauce-labs-bolt-t-shirt").click() + driver.find_element(By.CSS_SELECTOR, "#add-to-cart-sauce-labs-onesie").click() + + driver.find_element(By.CSS_SELECTOR, "#shopping_cart_container").click() + driver.find_element(By.CSS_SELECTOR, "#checkout").click() + waiter.until( + EC.text_to_be_present_in_element((By.CSS_SELECTOR, 'div[class="app_logo"]'), "Swag Labs") + ) + first_n = driver.find_element(By.CSS_SELECTOR, "#first-name").send_keys("Natalia") + last_n = driver.find_element(By.CSS_SELECTOR, "#last-name").send_keys("Sazonava") + zipcode = driver.find_element(By.CSS_SELECTOR, "#postal-code").send_keys("210039") + driver.find_element(By.CSS_SELECTOR, "#continue").click() + waiter.until( + EC.text_to_be_present_in_element((By.XPATH, '//*[@id="header_container"]/div[2]/span'), "Checkout: Overview") + ) + + + @pytest.mark.test_shop + @pytest.mark.parametrize('res_in, res_es', [ + (driver.find_element(By.XPATH, '//*[@id="checkout_summary_container"]/div/div[2]/div[8]').get_attribute("textContent"), 'Total: $58.29') + ]) + def test_price(res_in, res_es): + assert res_in == res_es + if res_in == res_es: + print("success") + else: + print("false") + + test_price(print()) + + driver.quit()