pomcorn 0.8.7__py3-none-any.whl → 0.9.1__py3-none-any.whl

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.

Potentially problematic release.


This version of pomcorn might be problematic. Click here for more details.

pomcorn/element.py CHANGED
@@ -172,13 +172,12 @@ class PomcornElement(Generic[locators.TLocator]):
172
172
  counted.
173
173
 
174
174
  """
175
- self.get_element(only_visible=only_visible)
175
+ cmd_ctrl = Keys.COMMAND
176
+ if sys.platform.lower() == "darwin":
177
+ cmd_ctrl = Keys.CONTROL
176
178
 
177
- if sys.platform == "darwin":
178
- self.send_keys(Keys.COMMAND + "a")
179
- else:
180
- self.send_keys(Keys.CONTROL + "a")
181
- self.send_keys(Keys.BACK_SPACE)
179
+ self.send_keys(cmd_ctrl + "a", only_visible=only_visible)
180
+ self.send_keys(Keys.BACK_SPACE, only_visible=only_visible)
182
181
 
183
182
  def send_keys(self, keys: str, only_visible: bool = True):
184
183
  """Send keys to element.
@@ -157,25 +157,41 @@ class XPathLocator(Locator):
157
157
  """
158
158
  return XPathLocator(query=f"({self.query} | {other.query})")
159
159
 
160
- def __getitem__(self, index: int) -> XPathLocator:
161
- """Allow get related xpath locator by index.
160
+ def __getitem__(self, value: int | str | XPathLocator) -> XPathLocator:
161
+ """Allow to set xpath expressions or index into the locator query.
162
162
 
163
- Example:
163
+ Examples:
164
164
  div_locator = XPathLocator("//div") --> `//div`
165
+
166
+ # Indexation
165
167
  div_locator[0] --> `(//div)[1]` # xpath numeration starts with 1
166
168
  div_locator[-1] --> `(//div)[last()]`
167
169
 
170
+ # Attribute condition
171
+ div_locator["@type='black'"] --> `//div[@type='black']
172
+
173
+ # Checking if there are children
174
+ child_locator = XPathLocator("//label").contains("Schedule")
175
+ --> `//label[contains(., 'Star']`
176
+ div_locator[child_locator] --> `//div[//label[contains(., 'Star']]`
177
+
168
178
  """
169
179
  query = f"({self.query})"
170
180
 
171
- if index >= 0:
181
+ if isinstance(value, XPathLocator):
182
+ value = value.query
183
+
184
+ if isinstance(value, str):
185
+ return XPathLocator(f"{query}[{value}]")
186
+
187
+ if value >= 0:
172
188
  # `+1` is used here because numeration in xpath starts with 1
173
- query += f"[{index + 1}]"
174
- elif index == -1:
189
+ query += f"[{value + 1}]"
190
+ elif value == -1:
175
191
  # To avoid ugly locators with `...)[last() - 0]`
176
192
  query += "[last()]"
177
193
  else:
178
- query += f"[last() - {abs(index + 1)}]"
194
+ query += f"[last() - {abs(value + 1)}]"
179
195
 
180
196
  return XPathLocator(query)
181
197
 
@@ -1,8 +1,7 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: pomcorn
3
- Version: 0.8.7
3
+ Version: 0.9.1
4
4
  Summary: Base implementation of Page Object Model
5
- Home-page: https://pypi.org/project/pomcorn/
6
5
  License: MIT
7
6
  Keywords: python,selenium,webdriver,autotests,page object model,page object pattern,page object,pom,parsing,browser
8
7
  Author: Saritasa
@@ -22,6 +21,7 @@ Classifier: Programming Language :: Python :: 3.13
22
21
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
22
  Requires-Dist: selenium (>=4.12)
24
23
  Project-URL: Documentation, http://pomcorn.rtfd.io/
24
+ Project-URL: Homepage, https://pypi.org/project/pomcorn/
25
25
  Project-URL: Repository, https://github.com/saritasa-nest/pomcorn/
26
26
  Description-Content-Type: text/markdown
27
27
 
@@ -2,15 +2,15 @@ pomcorn/__init__.py,sha256=gB9I-SXauMrhxQlvZmFgh_htHqUXjII6tvQmtJEU5Ks,318
2
2
  pomcorn/component.py,sha256=t1GARAI0cW5ubfv1hurxpD_2KFyFxvfzxVADtwcRhiE,12161
3
3
  pomcorn/descriptors/__init__.py,sha256=5q_d5GtcaFlIIyHdsUnE9UNbz3g40qJCHKNaWGvcC6s,72
4
4
  pomcorn/descriptors/element.py,sha256=jSYxEUqKdAIEHf_zL9m6udyO4QDR22Ivm37BOa-tdKc,4486
5
- pomcorn/element.py,sha256=l8haq8F25CZSIBTFST5bCwNWq9eg0rbjeKjvEiwG3VI,12205
5
+ pomcorn/element.py,sha256=_4jxmhBB5g8ztwGQoaPvrv3p9lCJwYo7m59EXbmlpdc,12214
6
6
  pomcorn/locators/__init__.py,sha256=eWAnv28EGwzF-NQTeB4jc-T3B3a0gMbBIiR4IbmTo1Q,760
7
- pomcorn/locators/base_locators.py,sha256=J9zrmuYxns5Kj54IvWmEYqY8YoRaeBFYYrz0r5ahkFg,9159
7
+ pomcorn/locators/base_locators.py,sha256=j5PpHevQrhuRFUEd21ABZkCg1sJWY1BTXCmuzWTaOE0,9746
8
8
  pomcorn/locators/xpath_locators.py,sha256=zcGNIk5HX36TTauCApgX0csdobWj8QFZ_td4-9qkTgU,7461
9
9
  pomcorn/page.py,sha256=AJLXffI6GFP6XN3vhoGGrUknzvJZzP6GBP7BLaGumX0,5824
10
10
  pomcorn/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  pomcorn/waits_conditions.py,sha256=E8sLfBvIV2EO91Mm5KyKXB5IGEB9gUWza3XPE4_aCQE,3528
12
12
  pomcorn/web_view.py,sha256=qt3Gpr9BMtV0tLp5sLlleSEqweh2PphHXlT02awf9SE,13585
13
- pomcorn-0.8.7.dist-info/LICENSE,sha256=1vmhQNp1dDH8ksJ199LuG4oKz5D4ZvNccPcFckiG2S4,1091
14
- pomcorn-0.8.7.dist-info/METADATA,sha256=b_oYSgcGJiLp8LK0ekT7ebiSzZjBgijahwnRbf76KBY,5880
15
- pomcorn-0.8.7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
16
- pomcorn-0.8.7.dist-info/RECORD,,
13
+ pomcorn-0.9.1.dist-info/LICENSE,sha256=1vmhQNp1dDH8ksJ199LuG4oKz5D4ZvNccPcFckiG2S4,1091
14
+ pomcorn-0.9.1.dist-info/METADATA,sha256=ZlE23C86mMcKiHV6GCsGrSrCpuvJ9QeWJczdfVfnkPM,5892
15
+ pomcorn-0.9.1.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
16
+ pomcorn-0.9.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.1
2
+ Generator: poetry-core 2.1.2
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any