manen 0.3.0.dev3__tar.gz → 0.3.0.dev5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/PKG-INFO +12 -10
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/README.md +11 -9
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/index.rst +6 -5
- manen-0.3.0.dev5/docs/source/manen/manen.page_object_model.config.rst +8 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/manen/manen.page_object_model.rst +1 -0
- manen-0.3.0.dev5/docs/source/user_guide/page_object_model.ipynb +606 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/manen/__init__.py +1 -1
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/manen/page_object_model/__init__.py +9 -9
- manen-0.3.0.dev3/manen/page_object_model/dom.py → manen-0.3.0.dev5/manen/page_object_model/config.py +21 -14
- manen-0.3.0.dev5/manen/page_object_model/dom.py +14 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/manen/page_object_model/element.py +3 -2
- manen-0.3.0.dev5/manen/page_object_model/exceptions.py +21 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/manen/page_object_model/webarea.py +1 -1
- manen-0.3.0.dev3/docs/source/user_guide/page_object_model.ipynb +0 -594
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/.github/workflows/build-documentation.yml +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/.github/workflows/deploy-package.yml +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/.github/workflows/test-package.yml +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/.gitignore +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/.rstcheck.cfg +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/LICENSE +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/Makefile +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/assets/screenshot_pypi_home.png +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/assets/screenshot_pypi_search_results.png +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/make.bat +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/_static/favicon.png +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/_static/manen_logo.png +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/_static/manen_logo_xs.png +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/_static/theme_override.css +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/about.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/changelog.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/conf.py +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/contributing.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/installation.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/manen/manen.browser.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/manen/manen.exceptions.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/manen/manen.finder.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/manen/manen.helpers.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/manen/manen.page_object_model.dom.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/manen/manen.page_object_model.element.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/manen/manen.page_object_model.webarea.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/manen/manen.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/user_guide/browser.ipynb +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/user_guide/dom_exploration.ipynb +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/docs/source/user_guide.rst +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/manen/browser.py +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/manen/exceptions.py +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/manen/finder.py +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/manen/helpers.py +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/manen/typing.py +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/pyproject.toml +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/requirements-dev.lock +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/requirements.lock +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/tests/__init__.py +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/tests/assets/page.yaml +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/tests/assets/page_test_basic.jinja.html +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/tests/test_finder.py +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/tests/test_helpers.py +0 -0
- {manen-0.3.0.dev3 → manen-0.3.0.dev5}/tests/test_imports.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: manen
|
|
3
|
-
Version: 0.3.0.
|
|
3
|
+
Version: 0.3.0.dev5
|
|
4
4
|
Summary: An implementation of the Page Object Model design pattern, and other utilities for web scraping and automation.
|
|
5
5
|
Project-URL: Changes, https://kodaho.github.io/manen/changelog.html
|
|
6
6
|
Project-URL: Documentation, https://kodaho.github.io/manen/
|
|
@@ -114,28 +114,30 @@ attributes. Note the whole page object model design pattern is implemented with
|
|
|
114
114
|
like in `Pydantic` model).
|
|
115
115
|
|
|
116
116
|
```python
|
|
117
|
-
from manen.page_object_model.webarea import Page, WebArea
|
|
118
117
|
from manen.page_object_model import dom
|
|
118
|
+
from manen.page_object_model.config import CSS, XPath
|
|
119
|
+
from manen.page_object_model.webarea import Page, WebArea
|
|
120
|
+
|
|
119
121
|
|
|
120
122
|
class HomePage(Page):
|
|
121
|
-
query: Annotated[dom.Input,
|
|
123
|
+
query: Annotated[dom.Input, CSS("input[name='q']")]
|
|
122
124
|
|
|
123
125
|
|
|
124
126
|
class SearchResultPage(Page):
|
|
125
127
|
class Result(WebArea):
|
|
126
|
-
name: Annotated[str,
|
|
127
|
-
version: Annotated[str,
|
|
128
|
-
link: Annotated[dom.HRef,
|
|
129
|
-
description: Annotated[str,
|
|
130
|
-
release_date: Annotated[datetime,
|
|
128
|
+
name: Annotated[str, CSS("h3 span.package-snippet__name")]
|
|
129
|
+
version: Annotated[str, CSS("h3 span.package-snippet__version")]
|
|
130
|
+
link: Annotated[dom.HRef, CSS("a.package-snippet")]
|
|
131
|
+
description: Annotated[str, CSS("p.package-snippet__description")]
|
|
132
|
+
release_date: Annotated[datetime, CSS("span.package-snippet__created")]
|
|
131
133
|
|
|
132
134
|
nb_results: Annotated[
|
|
133
135
|
int,
|
|
134
|
-
|
|
136
|
+
XPath("//*[@id='content']//form/div[1]/div[1]/p/strong"),
|
|
135
137
|
]
|
|
136
138
|
results: Annotated[
|
|
137
139
|
list[Result],
|
|
138
|
-
|
|
140
|
+
CSS("ul[aria-label='Search results'] li"),
|
|
139
141
|
]
|
|
140
142
|
```
|
|
141
143
|
|
|
@@ -89,28 +89,30 @@ attributes. Note the whole page object model design pattern is implemented with
|
|
|
89
89
|
like in `Pydantic` model).
|
|
90
90
|
|
|
91
91
|
```python
|
|
92
|
-
from manen.page_object_model.webarea import Page, WebArea
|
|
93
92
|
from manen.page_object_model import dom
|
|
93
|
+
from manen.page_object_model.config import CSS, XPath
|
|
94
|
+
from manen.page_object_model.webarea import Page, WebArea
|
|
95
|
+
|
|
94
96
|
|
|
95
97
|
class HomePage(Page):
|
|
96
|
-
query: Annotated[dom.Input,
|
|
98
|
+
query: Annotated[dom.Input, CSS("input[name='q']")]
|
|
97
99
|
|
|
98
100
|
|
|
99
101
|
class SearchResultPage(Page):
|
|
100
102
|
class Result(WebArea):
|
|
101
|
-
name: Annotated[str,
|
|
102
|
-
version: Annotated[str,
|
|
103
|
-
link: Annotated[dom.HRef,
|
|
104
|
-
description: Annotated[str,
|
|
105
|
-
release_date: Annotated[datetime,
|
|
103
|
+
name: Annotated[str, CSS("h3 span.package-snippet__name")]
|
|
104
|
+
version: Annotated[str, CSS("h3 span.package-snippet__version")]
|
|
105
|
+
link: Annotated[dom.HRef, CSS("a.package-snippet")]
|
|
106
|
+
description: Annotated[str, CSS("p.package-snippet__description")]
|
|
107
|
+
release_date: Annotated[datetime, CSS("span.package-snippet__created")]
|
|
106
108
|
|
|
107
109
|
nb_results: Annotated[
|
|
108
110
|
int,
|
|
109
|
-
|
|
111
|
+
XPath("//*[@id='content']//form/div[1]/div[1]/p/strong"),
|
|
110
112
|
]
|
|
111
113
|
results: Annotated[
|
|
112
114
|
list[Result],
|
|
113
|
-
|
|
115
|
+
CSS("ul[aria-label='Search results'] li"),
|
|
114
116
|
]
|
|
115
117
|
```
|
|
116
118
|
|
|
@@ -28,17 +28,18 @@ with and without Manen:
|
|
|
28
28
|
from selenium.webdriver.chrome.webdriver import WebDriver
|
|
29
29
|
|
|
30
30
|
from manen.page_object_model import dom
|
|
31
|
+
from manen.page_object_model.config import CSS, Default, Wait, XPath
|
|
31
32
|
from manen.page_object_model.webarea import Page, WebArea
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
class BlogPage(Page):
|
|
35
36
|
class Article(WebArea):
|
|
36
|
-
title: Annotated[str,
|
|
37
|
-
n_likes: Annotated[int,
|
|
38
|
-
tags: Annotated[list[str],
|
|
39
|
-
updated_at: Annotated[datetime,
|
|
37
|
+
title: Annotated[str, XPath("//h1")]
|
|
38
|
+
n_likes: Annotated[int, CSS("span.n_likes")]
|
|
39
|
+
tags: Annotated[list[str], CSS("span.tag"), Default([])]
|
|
40
|
+
updated_at: Annotated[datetime, CSS("span.updated_at")]
|
|
40
41
|
|
|
41
|
-
articles: Annotated[list[Article],
|
|
42
|
+
articles: Annotated[list[Article], CSS('div.article'), Wait(3)]
|
|
42
43
|
|
|
43
44
|
|
|
44
45
|
driver = WebDriver()
|