-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_google.py
69 lines (52 loc) · 1.74 KB
/
test_google.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
from functools import cache
import inject
from selenium.webdriver import Keys
from paf.component import Component
from paf.locator import By
from paf.manager import WebDriverManager
from paf.page import Page, PageFactory
from paf.xpath import XPath
class ResultItem(Component["ResultItem"]):
@property
@cache
def headline(self):
return self._find(By.tag_name("h3"))
class ResultPage(Page):
@property
@cache
def _result_container(self):
return self._find(XPath.at("div").attribute("id").be("search").encloses("div").classes("g"))
@property
@cache
def result(self):
return self._create_component(ResultItem, self._result_container)
class StartPage(Page):
@property
@cache
def _search_field(self):
return self._find(By.name("q"))
@property
@cache
def _search_btn(self):
return self._find(By.name("btnK"))
@property
@cache
def _accept_cookies_btn(self):
return self._find(By.id("L2AGLb"))
def accept_cookies(self):
if self._accept_cookies_btn.wait_for.displayed(True):
self._accept_cookies_btn.click()
self._accept_cookies_btn.expect.displayed(False)
def search(self, search: str):
self._search_field.type(search)
self._search_field.send_keys(Keys.ENTER)
return self._create_page(ResultPage)
def test_search():
page_factory = inject.instance(PageFactory)
start_page = page_factory.create_page(StartPage)
start_page.open("https://google.de")
start_page.accept_cookies()
result_page = start_page.search("Testerra")
result_page.result.first.headline.expect.text.contains("Testerra").be(True)
def teardown_module():
inject.instance(WebDriverManager).shutdown_all()