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