diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..e7e9d11
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..b068d73
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..494d9bf
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/python_selenium_1.iml b/.idea/python_selenium_1.iml
new file mode 100644
index 0000000..4f2c9af
--- /dev/null
+++ b/.idea/python_selenium_1.iml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/chromedriver b/chromedriver
new file mode 100755
index 0000000..df7565d
Binary files /dev/null and b/chromedriver differ
diff --git a/homework/hw10/base_page_county.py b/homework/hw10/base_page_county.py
new file mode 100644
index 0000000..9992fa8
--- /dev/null
+++ b/homework/hw10/base_page_county.py
@@ -0,0 +1,7 @@
+# from selenium.webdriver.support.ui import WebDriverWait
+#
+#
+# class BasePage:
+# def __init__(self, driver):
+# self.driver = driver
+# self.wait = WebDriverWait(driver, 5)
diff --git a/homework/hw10/contractors_county.py b/homework/hw10/contractors_county.py
new file mode 100644
index 0000000..afb13ee
--- /dev/null
+++ b/homework/hw10/contractors_county.py
@@ -0,0 +1,84 @@
+# from homework.hw10.base_page_county import BasePage
+# from selenium.webdriver.support import expected_conditions as ec
+# from selenium.webdriver.common.by import By
+#
+#
+# class ContractorPage(BasePage):
+# def __init__(self, driver):
+# super().__init__(driver)
+#
+# @property
+# def dropdown_service_type(self):
+# return self.wait.until(ec.visibility_of_element_located(
+# (By.CSS_SELECTOR, ".ui-multiselect-trigger-icon.ui-clickable.pi.pi-caret-down")))
+#
+# def service1(self, service1):
+# return self.driver.find_element_by_xpath(f"//*[text()='{service1}']/preceding-sibling::div")
+#
+# def service2(self, service2):
+# return self.driver.find_element_by_xpath(f"//*[text()='{service2}']/preceding-sibling::div")
+#
+# @property
+# def close_dropdown(self):
+# return self.driver.find_element_by_css_selector(".ui-multiselect-close.ui-corner-all")
+#
+# # service part end
+#
+# @property
+# def state_dropdown(self):
+# return self.driver.find_element_by_css_selector(".ui-dropdown-trigger-icon.ui-clickable.pi.pi-caret-down")
+#
+# def state(self, state):
+# return self.driver.find_element_by_xpath(f"//span[text()='{state}']")
+#
+# def click_dropdown(self):
+# dropdown_service_type = self.driver.find_element_by_css_selector(
+# ".ui-multiselect-trigger-icon.ui-clickable.pi.pi-caret-down")
+# dropdown_service_type.click()
+#
+# # state part end
+#
+# @property
+# def dropdown_service_county(self):
+# return self.wait.until(ec.visibility_of_element_located((By.XPATH,
+# '//*[@id="main-panel"]/div/div/div/app-contractor'
+# '-cmp/div/div/div/div[1]/div/div[2]/div['
+# '4]/p-multiselect/div/div[3]/span')))
+#
+# def county(self, county):
+# return self.driver.find_element_by_xpath(f"//*[text()='{county}']")
+#
+# def county_dropdown_click(self):
+# dropdown_service_county = self.driver.find_element_by_xpath((
+# "//*[@id='main-panel']/div/div/div/app-contractor-cmp/div/div/div/div[1]/div/div[2]/div["
+# "4]/p-multiselect/div/div[3]/span)"))
+# dropdown_service_county.click()
+#
+# @property
+# def close_dropdown_county(self):
+# return self.driver.find_element_by_xpath('//*[@id="main-panel"]/div/div/div/app-contractor-cmp/div/div/div'
+# '/div[1]/div/div[2]/div[4]/p-multiselect/div/div[4]/div[1]/a/span')
+#
+# # county part end
+#
+# def choose_contractor(self, service1, service2, state, county):
+# self.dropdown_service_type.click()
+# self.service1(service1).click()
+# self.service2(service2).click()
+# self.close_dropdown.click()
+# self.state_dropdown.click()
+# self.state(state).click()
+# self.dropdown_service_county.click()
+# self.county(county).click()
+# self.close_dropdown_county.click()
+#
+# # test method for test_contractors_county.py
+#
+# @property
+# def n_found(self):
+# return self.wait.until(ec.visibility_of_any_elements_located((By.CSS_SELECTOR, "h1")))
+#
+# def is_not_found_message(self):
+# return len(self.n_found) == 1
+#
+# # assert part
diff --git a/homework/hw10/landing_page_county.py b/homework/hw10/landing_page_county.py
new file mode 100644
index 0000000..1fc8fe3
--- /dev/null
+++ b/homework/hw10/landing_page_county.py
@@ -0,0 +1,27 @@
+# from homework.hw10.contractors_county import ContractorPage
+# from selenium.webdriver.support import expected_conditions as ec
+# from selenium.webdriver.common.by import By
+# from homework.hw10.base_page_county import BasePage
+#
+#
+# class LandingPage(BasePage):
+# def __init__(self, driver):
+# super().__init__(driver)
+#
+# # @property
+# # def header(self):
+# # return self.driver.find_elements_by_xpath("//*[contains(text(),'connect Construction')]")
+#
+# @property
+# def contractor(self):
+# return self.wait.until(ec.element_to_be_clickable((By.XPATH, "//*[text()='CONTRACTORS']")))
+#
+# def open(self):
+# self.driver.get("https://testkwidos.tk/")
+#
+# # def check(self):
+# # return len(self.header) == 1
+#
+# def open_contractor(self):
+# self.contractor.click()
+# return ContractorPage(self.driver)
diff --git a/homework/hw10/test_contractors_county.py b/homework/hw10/test_contractors_county.py
new file mode 100644
index 0000000..774057f
--- /dev/null
+++ b/homework/hw10/test_contractors_county.py
@@ -0,0 +1,27 @@
+# import pytest
+# from selenium import webdriver
+# import time
+# from homework.hw10.landing_page_county import LandingPage
+# from homework.hw10.contractors_county import ContractorPage
+# from webdriver_manager.chrome import ChromeDriverManager
+#
+#
+# class TestLandingPage:
+# @pytest.fixture()
+# def test_setup(self):
+# global driver
+#
+# # driver = webdriver.Chrome(executable_path="./chromedriver")
+# driver = webdriver.Chrome(ChromeDriverManager().install())
+#
+#
+# yield
+# time.sleep(5)
+# driver.quit()
+#
+# def test_open_contractors(self, test_setup):
+# landing_page = LandingPage(driver)
+# landing_page.open()
+# contractor_page = landing_page.open_contractor()
+# contractor_page.choose_contractor("Air conditioning", "Appliance installation", "California", "Orange")
+# assert contractor_page.is_not_found_message()
diff --git a/homework/hw11/base_page11.py b/homework/hw11/base_page11.py
new file mode 100644
index 0000000..457f38f
--- /dev/null
+++ b/homework/hw11/base_page11.py
@@ -0,0 +1,8 @@
+from selenium.webdriver.support.ui import WebDriverWait
+
+
+class BasePage:
+ def __init__(self, driver):
+ self.driver = driver
+ self.wait = WebDriverWait(driver, 2)
+
diff --git a/homework/hw11/blog_number11.py b/homework/hw11/blog_number11.py
new file mode 100644
index 0000000..df180ab
--- /dev/null
+++ b/homework/hw11/blog_number11.py
@@ -0,0 +1,17 @@
+from selenium.webdriver.support import expected_conditions as ec
+from selenium.webdriver.common.by import By
+from homework.hw11.base_page11 import BasePage
+
+
+class BlogPage(BasePage):
+ def __init__(self, driver):
+ super().__init__(driver)
+
+ def all_blogs(self):
+ total = self.wait.until(
+ ec.visibility_of_all_elements_located((By.XPATH, "//span[@class='label label-danger']")))
+ i = len(total)
+ if i == 12:
+ return 12
+ return False
+
diff --git a/homework/hw11/how_it_works11.py b/homework/hw11/how_it_works11.py
new file mode 100644
index 0000000..daf7659
--- /dev/null
+++ b/homework/hw11/how_it_works11.py
@@ -0,0 +1,31 @@
+from homework.hw11.base_page11 import BasePage
+from selenium.webdriver.support import expected_conditions as ec
+from selenium.webdriver.common.by import By
+import time
+
+
+class HowItWorksPage(BasePage):
+ def __init__(self, driver):
+ super().__init__(driver)
+
+ @property
+ def guest_user(self):
+ return self.wait.until(ec.element_to_be_clickable((By.XPATH, "//div[@id='accordion']/div/a/div/h4")))
+
+ def click_guest_user(self):
+ return self.guest_user.click()
+
+ def click_screenshot(self):
+ return self.wait.until(
+ ec.element_to_be_clickable((By.XPATH, "//*[@id='collapseOne']/div/div/div[1]/div/div[2]/div/img"))).click()
+
+ def close_screenshot(self):
+ return self.wait.until(ec.element_to_be_clickable(
+ (By.XPATH, "//*[@id='modal-gallery-container']/ks-upper-buttons/header/a/div"))).click()
+
+ def all_how_it_works(self):
+ self.click_guest_user()
+ self.click_screenshot()
+ time.sleep(3)
+ self.close_screenshot()
+
diff --git a/homework/hw11/landing_page11.py b/homework/hw11/landing_page11.py
new file mode 100644
index 0000000..edbbf5f
--- /dev/null
+++ b/homework/hw11/landing_page11.py
@@ -0,0 +1,54 @@
+
+
+from selenium.webdriver import ActionChains
+
+from homework.hw11.how_it_works11 import HowItWorksPage
+from homework.hw11.signinpage11 import SigninPage
+from selenium.webdriver.support import expected_conditions as ec
+from selenium.webdriver.common.by import By
+from homework.hw11.base_page11 import BasePage
+from homework.hw11.blog_number11 import BlogPage
+
+
+class LandingPage(BasePage):
+ def __init__(self, driver):
+ super().__init__(driver)
+
+ @property
+ def sign_in(self):
+ return self.wait.until(ec.element_to_be_clickable((By.XPATH, "//*[text()='SIGN IN']")))
+
+ def open(self):
+ self.driver.get("https://testkwidos.tk/")
+
+ def open_sign_in(self):
+ self.sign_in.click()
+ return SigninPage(self.driver)
+
+ @property
+ def how_it_works(self):
+ return self.wait.until(ec.element_to_be_clickable((By.XPATH, "//li[4]/a/p")))
+
+ def open_how_it_works(self):
+ self.how_it_works.click()
+ return HowItWorksPage(self.driver)
+
+ @property
+ def blog(self):
+ return self.wait.until(ec.element_to_be_clickable((By.XPATH, "//*[text()='BLOG']")))
+
+ def open_blog(self):
+ self.blog.click()
+ return BlogPage(self.driver)
+
+ # this part is a copy of Lana's HW ( it's too hard)
+
+ @property
+ def menu(self):
+ return self.wait.until(ec.visibility_of_all_elements_located((By.XPATH, "//a//p")))
+
+ def hover(self):
+ for item in self.menu:
+ print('\nItem:', item.text, '\nColor before', item.value_of_css_property('color'))
+ ActionChains(self.driver).move_to_element(item).perform()
+ print('Color after', item.value_of_css_property('color'))
diff --git a/homework/hw11/signinpage11.py b/homework/hw11/signinpage11.py
new file mode 100644
index 0000000..862e345
--- /dev/null
+++ b/homework/hw11/signinpage11.py
@@ -0,0 +1,35 @@
+from homework.hw11.base_page11 import BasePage
+from selenium.webdriver.support import expected_conditions as ec
+from selenium.webdriver.common.by import By
+import time
+
+
+class SigninPage(BasePage):
+ def __init__(self, driver):
+ super().__init__(driver)
+
+ @property
+ def email_field(self):
+ return self.wait.until(ec.visibility_of_element_located((By.CSS_SELECTOR, "#email")))
+
+ def enter_email(self):
+ return self.driver.find_element_by_css_selector("#email").send_keys("vladimir2133@gmail.com")
+
+ @property
+ def password_field(self):
+ return self.wait.until(ec.element_to_be_clickable((By.CSS_SELECTOR, "#password")))
+
+ def enter_password(self):
+ return self.driver.find_element_by_css_selector("#password").send_keys("VVVlkjjgfd234!")
+
+ @property
+ def click_button(self):
+ return self.driver.find_element_by_xpath("//button[@type='submit']")
+
+ def all_sign_in(self):
+ self.email_field.click()
+ self.enter_email()
+ self.password_field.click()
+ self.enter_password()
+ time.sleep(2)
+ self.click_button.click()
diff --git a/homework/hw11/test_hw11.py b/homework/hw11/test_hw11.py
new file mode 100644
index 0000000..f53f320
--- /dev/null
+++ b/homework/hw11/test_hw11.py
@@ -0,0 +1,44 @@
+import pytest
+from selenium import webdriver
+import time
+from homework.hw11.landing_page11 import LandingPage
+from webdriver_manager.chrome import ChromeDriverManager
+
+
+class TestLandingPage:
+ @pytest.fixture()
+ def test_setup(self):
+ global driver
+
+ # driver = webdriver.Chrome(executable_path="./chromedriver")
+ driver = webdriver.Chrome(ChromeDriverManager().install())
+
+ yield
+ time.sleep(5)
+ driver.quit()
+
+ def test_sign_in_flow(self, test_setup):
+ landing_page = LandingPage(driver)
+ landing_page.open()
+ sign_in_page = landing_page.open_sign_in()
+ sign_in_page.all_sign_in()
+
+ def test_how_it_works(self,test_setup):
+ landing_page = LandingPage(driver)
+ landing_page.open()
+ how_it_works_page = landing_page.open_how_it_works()
+ how_it_works_page.all_how_it_works()
+
+
+ # @pytest.mark.skip
+ def test_blogs(self, test_setup):
+ landing_page = LandingPage(driver)
+ landing_page.open()
+ blog_page = landing_page.open_blog()
+ count_blogs = blog_page.all_blogs()
+ assert count_blogs == 12
+
+ def test_hover(self, test_setup):
+ landing_page = LandingPage(driver)
+ landing_page.open()
+ landing_page.hover()
diff --git a/homework/hw17/test_api_orders17.py b/homework/hw17/test_api_orders17.py
new file mode 100644
index 0000000..d4ee2f6
--- /dev/null
+++ b/homework/hw17/test_api_orders17.py
@@ -0,0 +1,77 @@
+import requests
+import json
+
+
+class TestPets:
+ base_url = "http://petstore.swagger.io/v2"
+
+ def endpoint_order(self, id):
+ return f"/store/order/{id}"
+
+ def get_url(self, id):
+ return TestPets.base_url + self.endpoint_order(id)
+
+ # POST POST POST POST POST
+
+ def test_post_place_an_order(self):
+ body = {
+ "id": 8,
+ "petId": 92694,
+ "quantity": 1,
+ "shipDate": "",
+ "status": "placed",
+ "complete": True
+ }
+
+ b = json.dumps(body)
+ headers = {'Content-Type': 'application/json'}
+
+ response = requests.post(self.base_url + "/store/order", headers=headers, data=b, )
+ # print(response.status_code)
+
+ assert response.status_code == 200
+ json_response = json.loads(response.text)
+ order_id = json_response["id"]
+ order_pet_id = json_response["petId"]
+ order_quantity = json_response["quantity"]
+ order_status = json_response["status"]
+ order_complete = json_response["complete"]
+
+ assert order_id == 8
+ assert order_pet_id == 92694
+ assert order_quantity == 1
+ assert order_status == "placed"
+ assert order_complete == True
+
+ # GET GET GET GET GET
+
+ def test_get_order_by_id(self):
+ response = requests.request("GET", self.get_url(8))
+ assert response.status_code == 200
+
+ json_response = json.loads(response.text)
+
+ order_id = json_response["id"]
+ pet_id = json_response["petId"]
+ order_quantity = json_response["quantity"]
+ order_status = json_response["status"]
+
+ assert order_id == 8
+ assert pet_id == 92694
+ assert order_quantity == 1
+ assert order_status == "placed"
+
+ # DELETE DELETE DELETE DELETE DELETE
+
+ def test_delete_order_by_id(self):
+ response = requests.request("DELETE", self.get_url(8))
+
+ assert response.status_code == 200
+
+ response = requests.request("GET", self.get_url(8))
+ assert response.status_code == 404
+
+ json_response = json.loads(response.text)
+ assert json_response["code"] == 1
+ assert json_response["type"] == "error"
+ assert json_response["message"] == "Order not found"
diff --git a/homework/hw7/another.py b/homework/hw7/another.py
new file mode 100644
index 0000000..b3dbd66
--- /dev/null
+++ b/homework/hw7/another.py
@@ -0,0 +1,14 @@
+# class Another:
+# def __init__(self,num):
+# self.num = num
+#
+# def f_prime(self):
+# if self.num == 1:
+# return False
+# for i in range(2,self.num):
+# if self.num % i == 0:
+# return False
+# return True
+#
+# def c_to_f(self):
+# return (self.num - 32) * 5/9
diff --git a/homework/hw7/brands.py b/homework/hw7/brands.py
new file mode 100644
index 0000000..02a0c5e
--- /dev/null
+++ b/homework/hw7/brands.py
@@ -0,0 +1,38 @@
+# class Tv:
+# def __init__(self, size, processor, price):
+# self.size = size
+# self.processor = processor
+# self.price = price
+#
+# def f_price(self):
+# if self.price <= 2500:
+# return "good choice"
+# elif 2501 >= self.price <= 3500:
+# return " wait for sale "
+# elif 3501 <= self.price <= 20000:
+# return "too expensive"
+# else:
+# return "don't buy"
+#
+# def f_size(self):
+# if 1 <= self.size <= 55:
+# return "a bigger size recommenced "
+# elif 56 >= self.size <= 75:
+# return "very good deal"
+# elif 76 <= self.size <= 250:
+# return "best deal"
+# else:
+# return "not possible"
+#
+# def f_processor(self):
+# if self.processor == 2:
+# return "too slow"
+# elif self.processor == 4:
+# return "a better one recommenced "
+# elif 6 <= self.processor <=8:
+# return "perfect"
+# else:
+# return "wrong data"
+#
+#
+#
diff --git a/homework/hw7/test_another.py b/homework/hw7/test_another.py
new file mode 100644
index 0000000..6c147b5
--- /dev/null
+++ b/homework/hw7/test_another.py
@@ -0,0 +1,30 @@
+# from another import Another
+#
+#
+# def test_prime():
+# # Arrange
+# number_19 = Another(19)
+#
+# # Act
+# result = number_19.f_prime()
+#
+# # Assert
+# assert result == True
+#
+#
+# def test_prime_2():
+# number_1 = Another(1)
+# result = number_1.f_prime()
+# assert result == False
+#
+#
+# def test_celsius():
+# celsius_t_1 = Another(0)
+# result = celsius_t_1.c_to_f()
+# assert result == -17.77777777777778
+#
+#
+# def test_celsius_2():
+# celsius_t_2 = Another(98.6)
+# result = celsius_t_2.c_to_f()
+# assert result == 37.0
diff --git a/homework/hw7/test_one.py b/homework/hw7/test_one.py
new file mode 100644
index 0000000..2bdaa1d
--- /dev/null
+++ b/homework/hw7/test_one.py
@@ -0,0 +1,23 @@
+# from brands import Tv
+#
+#
+# def test_sony_tv():
+# # Arrange
+# Sony_XBR85X850G = Tv(85, 4 , 2498)
+#
+# # Act
+# result = Sony_XBR85X850G.f_price()
+#
+# # Assert
+# assert result == "good choice"
+#
+#
+# def test_lg_tv():
+# LG_86UM8070PUA = Tv(86, 4 , 1998)
+# result = LG_86UM8070PUA.f_size()
+# assert result == "best deal"
+#
+# def test_samsung_tv():
+# samsung_Q900_QLED_Smart_8K = Tv(98, 8, 59999)
+# result = samsung_Q900_QLED_Smart_8K.f_processor()
+# assert result == "perfect"
diff --git a/homework/hw8/test_Lana_offers.py b/homework/hw8/test_Lana_offers.py
new file mode 100644
index 0000000..007640f
--- /dev/null
+++ b/homework/hw8/test_Lana_offers.py
@@ -0,0 +1,86 @@
+# import pytest
+# from selenium import webdriver
+# from selenium.webdriver.support.ui import WebDriverWait
+# import time
+# from selenium.webdriver.support import expected_conditions as EC
+# from selenium.webdriver.common.by import By
+#
+# class TestOffersMenu:
+#
+# @pytest.fixture()
+# def setup(self):
+# global driver
+# global wait
+# driver = webdriver.Chrome(executable_path="./chromedriver")
+# wait = WebDriverWait(driver,5)
+# driver.get("https://testkwidos.tk/")
+# yield
+# time.sleep(5)
+# driver.quit()
+#
+# @pytest.mark.usefixtures("setup")
+# def test_offers(self):
+# offers = wait.until(EC.presence_of_element_located((By.XPATH,"//*[text()='OFFERS']")))
+# offers.click()
+#
+# first_caret = wait.until(EC.presence_of_element_located((By.XPATH,"//span[contains(@class, 'caret')][position() = 1]")))
+# first_caret.click()
+#
+# air_check = wait.until(EC.presence_of_element_located((By.XPATH, "//*[text()='Air conditioning']/preceding-sibling::div")))
+# air_check.click()
+#
+# exit = driver.find_element_by_xpath("//span[@class='pi pi-times']")
+# exit.click()
+#
+# second_caret = driver.find_element_by_xpath("//span[@class = 'ui-dropdown-trigger-icon ui-clickable pi pi-caret-down']")
+# second_caret.click()
+#
+# state = driver.find_element_by_xpath('//li/span[text() = "California"]')
+# state.click()
+#
+# house_text = wait.until(EC.presence_of_element_located((By.XPATH,"//*[contains(text(),'house')]")))
+# assert house_text.text == "house", "Text should be 'house'"
+#
+# air_text = wait.until(EC.presence_of_element_located((By.XPATH,"//*[contains(text(),'Air conditioning')]")))
+# assert air_text.text == "Air conditioning", "Text should be 'Air conditioning'"
+#
+# card = driver.find_element_by_xpath("//div[@class='card card-shape__green']")
+# background = card.value_of_css_property("background-color")
+#
+# assert background == "rgba(224, 241, 222, 1)", "Color should be 'rgba(224, 241, 222, 1)'"
+#
+#
+# это dropdown menu !!!!!!!!!!!!!!!!!
+
+# @pytest.mark.usefixtures("setup")
+# def test_drop_select(self):
+# offers = wait.until(EC.presence_of_element_located((By.XPATH, "//*[text()='OFFERS']")))
+# offers.click()
+#
+# second_caret = wait.until(EC.presence_of_element_located((By.XPATH, "//span[@class = 'ui-dropdown-trigger-icon ui-clickable pi pi-caret-down']")))
+# second_caret.click()
+#
+# states = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//div[@class='ui-dropdown-items-wrapper']/ul/li/span")))
+#
+# for state in states:
+# if state.text == 'Wyoming':
+# state.click()
+# selected_option = state.text
+# break
+#
+# assert selected_option == 'Wyoming', "Selected option should be Wyoming"
+#
+# это skroll down страницу !!!!!!!!!!!!!!
+#
+# @pytest.mark.usefixtures("setup")
+# def test_blog_scroll_down(self):
+# blog = wait.until(EC.presence_of_element_located((By.XPATH, "//*[text()='BLOG']")))
+# blog.click()
+#
+# driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
+#
+# bottom_text = wait.until(EC.presence_of_element_located((By.XPATH, "//*[text()='Kwidos is the place for new businesses']")))
+#
+# assert bottom_text.text == 'KWIDOS IS THE PLACE FOR NEW BUSINESSES', 'Text should be "KWIDOS IS THE PLACE FOR NEW BUSINESSES"'
+#
+#
diff --git a/homework/hw8/test_contractors8.py b/homework/hw8/test_contractors8.py
new file mode 100644
index 0000000..ff8d3b2
--- /dev/null
+++ b/homework/hw8/test_contractors8.py
@@ -0,0 +1,40 @@
+# import pytest
+# from selenium import webdriver
+# import time
+# from selenium.webdriver.support.ui import WebDriverWait
+# from selenium.webdriver.support import expected_conditions as conditions
+# from selenium.webdriver.common.by import By
+#
+# class TestContractor:
+# @pytest.fixture()
+# def test_setup(self):
+# global driver
+# global wait
+#
+# driver = webdriver.Chrome(executable_path="./chromedriver")
+# wait = WebDriverWait(driver,5)
+# # driver.implicitly_wait(5)
+# driver.get("https://testkwidos.tk/")
+# yield
+# time.sleep(5)
+# driver.quit()
+#
+# def test_contractor(self,test_setup):
+# contractor = wait.until(conditions.element_to_be_clickable((By.XPATH,"//*[text()='CONTRACTORS']")))
+# contractor.click()
+#
+# dropdown_service_type = wait.until(conditions.visibility_of_element_located((By.CSS_SELECTOR, ".ui-multiselect-trigger-icon.ui-clickable.pi.pi-caret-down")))
+# driver.find_element_by_css_selector(".ui-multiselect-trigger-icon.ui-clickable.pi.pi-caret-down")
+# dropdown_service_type.click()
+# ac_checkbox=driver.find_element_by_xpath("//*[text()='Air conditioning']/preceding-sibling::div")
+# ac_checkbox.click()
+# close_dropdown = driver.find_element_by_css_selector(".ui-multiselect-close.ui-corner-all")
+# close_dropdown.click()
+# state_dropdown=driver.find_element_by_css_selector(".ui-dropdown-trigger-icon.ui-clickable.pi.pi-caret-down")
+# state_dropdown.click()
+# arizona = driver.find_element_by_xpath("//span[text()='Arizona']")
+# arizona.click()
+#
+# not_found_list = wait.until(conditions.visibility_of_any_elements_located((By.XPATH,"//*[text()='Contractors not found']")))
+# assert len(not_found_list) == 1
+#
diff --git a/homework/hw8/test_offers.py b/homework/hw8/test_offers.py
new file mode 100644
index 0000000..4afb4a3
--- /dev/null
+++ b/homework/hw8/test_offers.py
@@ -0,0 +1,81 @@
+# import pytest
+# from selenium import webdriver
+# import time
+#
+# from selenium.webdriver.common.by import By
+# from selenium.webdriver.support.ui import WebDriverWait
+# from selenium.webdriver.support.select import Select
+# from selenium.webdriver.support import expected_conditions, wait
+#
+#
+# class TestOffers:
+# @pytest.fixture()
+# def test_setup(self):
+# global driver
+# global wait
+# driver = webdriver.Chrome(executable_path="./chromedriver")
+# wait = WebDriverWait(driver, 5)
+# # driver.implicitly_wait(5)
+# driver.get("https://kwidos.com/")
+# yield
+# time.sleep(3)
+# driver.quit()
+#
+# def test_offers(self, test_setup):
+# offers = wait.until(expected_conditions.element_to_be_clickable((By.XPATH, "//*[text()='OFFERS']")))
+# offers.click()
+#
+# dropdown_service_type = wait.until(expected_conditions.visibility_of_element_located(
+# (By.CSS_SELECTOR, ".ui-multiselect-trigger-icon.ui-clickable.pi.pi-caret-down")))
+# driver.find_element_by_css_selector(".ui-multiselect-trigger-icon.ui-clickable.pi.pi-caret-down")
+# dropdown_service_type.click()
+#
+# search = wait.until(expected_conditions.visibility_of_element_located(
+# (By.XPATH, "//*[@class='ui-inputtext ui-widget ui-state-default ui-corner-all']")))
+# search.click()
+# search.send_keys("electric")
+#
+# electric_checkbox = driver.find_element_by_xpath(
+# "//*[@id='main-panel']/div/div/div/app-offer-search/div/div/div/div[1]/div/div[2]/div["
+# "2]/p-multiselect/div/div[4]/div[2]/ul/li[23]/label ")
+# electric_checkbox.click()
+#
+# dropdown_service_type = wait.until(expected_conditions.visibility_of_element_located(
+# (By.CSS_SELECTOR, ".ui-multiselect-trigger-icon.ui-clickable.pi.pi-caret-down")))
+# driver.find_element_by_css_selector(".ui-multiselect-trigger-icon.ui-clickable.pi.pi-caret-down")
+# dropdown_service_type.click()
+#
+# state_dropdown = driver.find_element_by_css_selector(".ui-dropdown-trigger-icon.ui-clickable.pi.pi-caret-down")
+# state_dropdown.click()
+#
+# search2 = wait.until(expected_conditions.visibility_of_element_located(
+# (By.XPATH, "//*[@class='ui-dropdown-filter ui-inputtext ui-widget ui-state-default ui-corner-all']")))
+# search2.click()
+# search2.send_keys("florida")
+#
+# florida_checkbox = driver.find_element_by_xpath("//*[@id='main-panel']/div/div/div/app-offer-search/div/div"
+# "/div/div[1]/div/div[2]/div[3]/p-dropdown/div/div[4]/div["
+# "2]/ul/li")
+# florida_checkbox.click()
+#
+# breaker_box_text = wait.until(expected_conditions.presence_of_element_located((By.XPATH, "//*[contains(text(),"
+# "'Breaker box')]")))
+# assert breaker_box_text.text == "Breaker box"
+#
+# color = driver.find_element_by_xpath("//*[@class='card card-shape__green']")
+# background_color = color.value_of_css_property("background-color")
+#
+# assert background_color == "rgba(224, 241, 222, 1)"
+#
+# def test_offers_two(self, test_setup):
+# offers = wait.until(expected_conditions.element_to_be_clickable((By.XPATH, "//*[text()='OFFERS']")))
+# offers.click()
+#
+# state_dropdown = wait.until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, ".ui-dropdown-trigger-icon.ui-clickable.pi.pi-caret-down")))
+# state_dropdown.click()
+#
+# iterate_state = driver.find_elements_by_xpath("//div[@class='ui-dropdown-items-wrapper']/ul/li/span")
+# for x in iterate_state:
+# if x.text == "Wyoming":
+# x.click()
+#
diff --git a/homework/hw8/test_taras_offers.py b/homework/hw8/test_taras_offers.py
new file mode 100644
index 0000000..ea50bd0
--- /dev/null
+++ b/homework/hw8/test_taras_offers.py
@@ -0,0 +1,77 @@
+# from selenium import webdriver
+# import time
+# import pytest
+# from selenium.webdriver.common.by import By
+# from selenium.webdriver.common.keys import Keys
+# from selenium.webdriver.support import expected_conditions as EC
+# from selenium.webdriver.support.ui import WebDriverWait
+#
+#
+# # Homework 1============================================
+#
+# class Test_Offers:
+# @pytest.fixture()
+# def test_setup(self):
+# global driver
+# driver = webdriver.Chrome(executable_path="./chromedriver")
+# driver.implicitly_wait(6)
+# driver.maximize_window()
+# driver.get("https://testkwidos.tk/")
+# yield
+# time.sleep(3)
+# driver.quit()
+#
+# # HOMEWORK 1.1
+#
+# def test_homework_1_1(self, test_setup):
+#
+# offers = driver.find_element_by_xpath("//*[contains(text(), 'OFFERS')]")
+# offers.click()
+#
+# service_type = driver.find_element_by_css_selector(".ui-multiselect-trigger-icon.ui-clickable.pi.pi-caret-down")
+# service_type.click()
+#
+# select = driver.find_element_by_xpath("//label[contains(text(),'Air conditioning')]")
+# select.click()
+#
+# close = driver.find_element_by_css_selector(".pi.pi-times")
+# close.click()
+#
+# state_field = driver.find_element_by_css_selector(".ui-dropdown-trigger-icon.ui-clickable.pi.pi-caret-down")
+# state_field.click()
+#
+# california = driver.find_element_by_xpath("//span[contains(text(),'California')]")
+# california.click()
+#
+# text = driver.find_element_by_xpath("//*[contains(text(), 'house')]").text
+# assert "house" == text
+#
+# # HOMEWORK 1.2
+#
+# def test_homework_1_2(self, test_setup):
+# offers = driver.find_element_by_xpath("//*[text()='OFFERS']")
+# offers.click()
+#
+# service_type = driver.find_element_by_css_selector(".ui-multiselect-trigger-icon.ui-clickable.pi.pi-caret-down")
+# service_type.click()
+#
+# select = driver.find_element_by_xpath("//label[contains(text(),'Air conditioning')]")
+# select.click()
+#
+# close = driver.find_element_by_css_selector(".pi.pi-times")
+# close.click()
+#
+# state_field = driver.find_element_by_css_selector(".ui-dropdown-trigger-icon.ui-clickable.pi.pi-caret-down")
+# state_field.click()
+#
+# iterate_state = driver.find_elements_by_xpath("//div[@class='ui-dropdown-items-wrapper']/ul/li/span")
+# for wyo in iterate_state:
+# if wyo.text == "Wyoming":
+# wyo.click()
+#
+# def test_homework_1_3(self, test_setup):
+# blog = driver.find_element_by_xpath("//p[contains(text(),'BLOG')]")
+# blog.click()
+#
+# scroll_down = driver.find_element_by_xpath("//span[contains(text(),'Kwidos is the place for new businesses')]")
+# driver.execute_script("arguments[0].scrollIntoView();", scroll_down)
diff --git a/template/base_template.py b/template/base_template.py
new file mode 100644
index 0000000..345cdc8
--- /dev/null
+++ b/template/base_template.py
@@ -0,0 +1,14 @@
+from selenium.webdriver.support.ui import WebDriverWait
+
+# https://selenium-python.readthedocs.io/waits.html
+# this class | page is all about waits (explicit waits = wait until condition)
+# self :
+# self represents the instance of the class. By using the "self" keyword we can access the attributes and methods of the class in python.
+# "__init__" is a reseved method in python classes. It is known as a constructor in object oriented concepts.
+# This method called when an object is created from the class and it allow the class to initialize the attributes of a class.
+
+class BasePage:
+ def __init__(self, driver):
+ self.driver = driver
+ self.wait = WebDriverWait(driver, 2)
+
diff --git a/template/homepage_template.py b/template/homepage_template.py
new file mode 100644
index 0000000..0e49cf3
--- /dev/null
+++ b/template/homepage_template.py
@@ -0,0 +1,75 @@
+from selenium.webdriver.support import expected_conditions as ec
+from selenium.webdriver.common.by import By
+from tollroads.base_page_toalroads import BasePage
+from tollroads.sign_in_tollroads import SigninPage
+from selenium.webdriver import ActionChains
+
+
+# this class is for homepage
+
+
+class LandingPage(BasePage):
+ def __init__(self, driver):
+ super().__init__(driver)
+
+# get to click
+
+ @property
+ def covid_ad(self):
+ return self.wait.until(ec.element_to_be_clickable((By.XPATH, '')))
+
+# open homepage
+
+ def open(self):
+ self.driver.get("")
+
+# function to close pop up
+
+ def close_covid_ad(self):
+ self.covid_ad.click()
+ return SigninPage(self.driver)
+
+# send keys
+
+ def enter_email(self):
+ return self.driver.find_element_by_xpath('').send_keys("")
+
+
+# scroll down
+
+
+ def scroll_down(self):
+ return self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
+
+
+# dropdown menu
+
+ @pytest.mark.usefixtures("setup")
+ def test_drop_select(self):
+ offers = wait.until(ec.presence_of_element_located((By.XPATH, "//*[text()='OFFERS']")))
+ offers.click()
+
+
+
+# count function
+
+ def all_blogs(self):
+ total = self.wait.until(
+ ec.visibility_of_all_elements_located((By.XPATH, "")))
+ i = len(total)
+ if i == 10:
+ return 10
+ return False
+
+
+# hover on with print colors before and after (from selenium.webdriver import ActionChains)
+
+ @property
+ def menu(self):
+ return self.wait.until(ec.visibility_of_all_elements_located((By.XPATH, "")))
+
+ def hover(self):
+ for item in self.menu:
+ print('\nItem:', item.text, '\nColor before', item.value_of_css_property('color'))
+ ActionChains(self.driver).move_to_element(item).perform()
+ print('Color after', item.value_of_css_property('color'))
diff --git a/template/test_template.py b/template/test_template.py
new file mode 100644
index 0000000..3143096
--- /dev/null
+++ b/template/test_template.py
@@ -0,0 +1,30 @@
+import pytest
+from selenium import webdriver
+import time
+from SDGE.landing_page_sdge import LandingPage
+from webdriver_manager.chrome import ChromeDriverManager
+
+
+# @pytest.fixture() are functions, which will run before each test function to which it is applied. Fixtures are used
+# to feed some data to the tests such as database connections, URLs to test and some sort of input data
+
+class TestLandingPage:
+ @pytest.fixture()
+ def test_setup(self):
+ global driver
+
+ # driver = webdriver.Chrome(executable_path="./chromedriver")
+ driver = webdriver.Chrome(ChromeDriverManager().install())
+
+ # this is time wait before driver quite (browser close)
+
+ yield
+ time.sleep(15)
+ driver.quit()
+
+ def test_sign_in_flow(self, test_setup):
+ landing_page = LandingPage(driver)
+ landing_page.open()
+ landing_page.all_sign_in()
+ text = landing_page.text()
+ assert text == '$26.96'
\ No newline at end of file
diff --git a/test_first.py b/test_first.py
index 97da6d4..e69de29 100644
--- a/test_first.py
+++ b/test_first.py
@@ -1,21 +0,0 @@
-from car import Car
-
-def test_gastype_not_diesel():
- # Arrange
- volvo_s90 = Car("Volvo", "S90", 2)
-
- # Act
- result = volvo_s90.convert_gas()
-
- # Assert
- assert result != "Diesel", "Gas Type is wrong"
-
-def test_gastype_elite():
- # Arrange
- volvo_s90 = Car("Volvo", "S90", 3)
-
- # Act
- result = volvo_s90.convert_gas()
-
- # Assert
- assert result == "Elite"
\ No newline at end of file