-
Notifications
You must be signed in to change notification settings - Fork 107
Expand file tree
/
Copy pathquestions.py
More file actions
35 lines (25 loc) · 1.09 KB
/
questions.py
File metadata and controls
35 lines (25 loc) · 1.09 KB
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
"""
This module contains DuckDuckGo Questions.
"""
from abc import ABC, abstractmethod
from interactions.duckduckgo.pages import ResultPage
from playwright.sync_api import Page
from screenplay.pattern import Actor, Question, Answer
# ------------------------------------------------------------
# DuckDuckGo Question parent class
# ------------------------------------------------------------
class DuckDuckGoQuestion(Question[Answer], ABC):
@abstractmethod
def request_on_page(self, actor: Actor, page: Page) -> Answer:
pass
def request_as(self, actor: Actor) -> Answer:
page: Page = actor.using('page')
return self.request_on_page(actor, page)
# ------------------------------------------------------------
# DuckDuckGo Questions
# ------------------------------------------------------------
class result_link_titles(DuckDuckGoQuestion[list[str]]):
def request_on_page(self, _, page: Page) -> list[str]:
result_page = ResultPage(page)
result_page.result_links.nth(4).wait_for()
return result_page.result_links.all_text_contents()