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
5 changes: 1 addition & 4 deletions HW_2/Task_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,4 @@
for j in i:
if type(j) == type(listC):
for k in j:
print(k)



print(k)
77 changes: 77 additions & 0 deletions HW_3/Task_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
driver.get("https://www.saucedemo.com/")

time.sleep(1)
username = driver.find_element(By.ID, "user-name")
username.send_keys("problem_user")
time.sleep(1)
password = driver.find_element(By.NAME, "password")
password.send_keys("secret_sauce")
time.sleep(1)
login_btn = driver.find_element(By.CSS_SELECTOR, "input#login-button")
login_btn.click()

time.sleep(1)
driver.quit()



## Test two
driver = webdriver.Firefox()
driver.get("https://www.saucedemo.com/")

time.sleep(1)
username = driver.find_element(By.ID, "user-name")
username.send_keys("locked_out_user")

time.sleep(1)
password = driver.find_element(By.NAME, "password" )
password.send_keys("secret_sauce")

time.sleep(1)
login_btn = driver.find_element(By.CSS_SELECTOR, "input#login-button")
login_btn.click()

time.sleep(1)
driver.quit()


## Test 3

driver = webdriver.Chrome()
driver.get("https://www.saucedemo.com/")

time.sleep(1)
username = driver.find_element(By.ID, "user-name")
username.send_keys("error_user")
time.sleep(1)
password = driver.find_element(By.NAME, "password")
password.send_keys("secret_sauce")
time.sleep(1)
login_btn = driver.find_element(By.CSS_SELECTOR, "input#login-button")
login_btn.click()

time.sleep(1)
driver.quit()


## Test 4
driver = webdriver.Edge()
driver.get("https://www.saucedemo.com/")

time.sleep(1)
username = driver.find_element(By.ID, "user-name")
username.send_keys("performance_glitch_user")
time.sleep(1)
password = driver.find_element(By.NAME, "password")
password.send_keys("secret_sauce")
time.sleep(1)
login_btn = driver.find_element(By.CSS_SELECTOR, "input#login-button")
login_btn.click()

time.sleep(1)
driver.quit()
3 changes: 3 additions & 0 deletions HW_3/Task_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## * Поменять цвет кнопки при нажатии на нее на красный (никакой переход не должен осуществляться)

# В процессе решение
14 changes: 14 additions & 0 deletions HW_4/Task_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## Напишите функцию multiply(a,b), которая возвращает произведение чисел


def multiply(a, b):
return a * b



a = int(input("a = "))
b = int(input("b = "))

print(multiply(a, b))


61 changes: 61 additions & 0 deletions HW_4/Task_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
## Напишите класс Calculator со следующими методами:

# add(a,b)
# subtract(a,b)
# multiply(a,b)
# divide(a,b) (проверка деления на ноль)

# Решила задачу двумя способами, с "return" и с "print"

class Calculator1:

def add (a, b):
return a + b

def subtract (a, b):
return a - b

def multiply (a, b):
return a * b

def divide (a, b):
if b == 0:
return "can not divide a number to 0, please, enter another number"
else:
return a / b

a = int(input("a = "))
b = int(input("b = "))

print(f'a + b = {Calculator1.add( a, b)}')
print(f'a - b = {Calculator1.subtract( a, b)}')
print(f'a * b = {Calculator1.multiply( a, b)}')
print(f'a / b = {Calculator1.divide( a, b)}')



class Calculator2:

def add(a, b):
print(f'a + b = { a + b }' )

def subtract(a, b):
print(f'a - b = { a - b }' )

def multiply (a, b):
print(f'a * b = { a * b }' )

def divide (a, b):
if b == 0:
print("can not divide a number to 0, please, enter another number")
else:
print(f'a / b = { a / b }' )

a = int(input("a = "))
b = int(input("b = "))

Calculator2.add(a, b)
Calculator2.subtract(a, b)
Calculator2.multiply(a, b)
Calculator2.divide(a, b)

23 changes: 23 additions & 0 deletions HW_4/Task_3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Создайте класс User, с атрибутами name, email, my_wish и методом introduce(), который печатает:
#
# "Привет, я Адам, моя почта [email protected] и у меня есть мечта "


class User:
def __init__(self, name, email, my_wish):
self.name = name
self.email = email
self.my_wish = my_wish


def introduce(self):
print(f'Привет, я {self.name}, моя почта {self.email} и у меня есть мечта: {self.my_wish}')


name = input("Имя: ")
email = input("Почта: ")
my_wish = input("Желания: ")


a = User (name, email, my_wish)
a.introduce()
12 changes: 12 additions & 0 deletions HW_5/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import pytest
from selenium import webdriver

@pytest.fixture()
def browser():
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.saucedemo.com/")
yield driver
driver.quit()


141 changes: 141 additions & 0 deletions HW_5/saucedemo_login_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import pytest

from HW_5.conftest import browser


def test_standard_user_login(browser):

username = browser.find_element(By.ID, "user-name")
username.send_keys("standard_user")

password = browser.find_element(By.ID, "password")
password.send_keys("secret_sauce")

time.sleep(1)

login_btn = browser.find_element(By.ID, "login-button").click()

assert 'inventory' in browser.current_url


def test_locked_out_user_login(browser):

username = browser.find_element(By.ID, "user-name")
username.send_keys("locked_out_user")

password = browser.find_element(By.ID, "password")
password.send_keys("secret_sauce")

time.sleep(1)

login_btn = browser.find_element(By.ID, "login-button").click()

time.sleep(1)

error_message = browser.find_element(By.XPATH, "//div/h3").text
assert error_message == 'Epic sadface: Sorry, this user has been locked out.'


def test_problem_user_login(browser):

username = browser.find_element(By.ID, "user-name")
username.send_keys("problem_user")

password = browser.find_element(By.ID, "password")
password.send_keys("secret_sauce")

time.sleep(1)

login_btn = browser.find_element(By.ID, "login-button").click()

image_in_main_page = browser.find_element(By.XPATH, "//img[@src='/static/media/sl-404.168b1cce.jpg']")

first_element = browser.find_element(By.XPATH, "//div[contains(text(), 'Sauce Labs Backpack')]")
first_element.click()
image_in_first_element_page = browser.find_element(By.XPATH, "//img[@src ='/static/media/sauce-pullover-1200x1500.51d7ffaf.jpg']")

assert image_in_main_page != image_in_first_element_page # сравниваю изображения первого элемента в главном экране,и после перехода на него


def test_wrong_credentials_login(browser):

username = browser.find_element(By.ID, "user-name")
username.send_keys("Madina")

password = browser.find_element(By.ID, "password")
password.send_keys("1234")

time.sleep(1)

login_btn = browser.find_element(By.ID, "login-button").click()

time.sleep(1)


error_message = browser.find_element(By.XPATH, "//div/h3").text
assert error_message == 'Epic sadface: Username and password do not match any user in this service'


pytest.mark.slow()
def test_add_item_to_cart(browser): # функционал добавления элемента на карзину
test_standard_user_login(browser) # вызвала готовую функцию логина

add_to_card_btn = browser.find_element(By.ID, "add-to-cart-sauce-labs-backpack")
add_to_card_btn.click()

time.sleep(3)

shipping_cart_count = browser.find_element(By.CLASS_NAME, "shopping_cart_link").text

assert shipping_cart_count == "1"



def test_validate_number_of_items_in_the_page(browser): #валидируем количество вещей на странице
test_standard_user_login(browser)


all_items = browser.find_elements(By.CLASS_NAME, "inventory_item")

number_of_items = 0

for item in all_items:
if item.is_displayed():
number_of_items += 1

assert number_of_items == 6


pytest.mark.slow()
def test_validate_each_item_has_img_price_button(browser): #валидируем, что каждый айтем имеет картинку, цену и кнопку добавления
test_standard_user_login(browser)


all_items = browser.find_elements(By.CLASS_NAME, "inventory_item")

img = browser.find_element(By.XPATH, "//div/a/img")
price = browser.find_element(By.XPATH, "//div[@class = 'inventory_item_price']")
add_button = browser.find_element(By.XPATH, "//button[contains(text(),'Add to cart' )]")

time.sleep(3)

for item in all_items:
if item.is_displayed():

assert img.is_displayed()
assert price.is_displayed()
assert add_button.is_displayed()