Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
Binary file not shown.
7 changes: 7 additions & 0 deletions 06K_lesson/pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[pytest]

python = test_*.py
markers =
test_calculator: проверка калькулятора
test_form: проверка формы
test_shop
50 changes: 50 additions & 0 deletions 06K_lesson/test_01_form.py
Original file line number Diff line number Diff line change
@@ -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()


36 changes: 36 additions & 0 deletions 06K_lesson/test_02_calc.py
Original file line number Diff line number Diff line change
@@ -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()
51 changes: 51 additions & 0 deletions 06K_lesson/test_03_shop.py
Original file line number Diff line number Diff line change
@@ -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()