parsagon 0.14.8__py3-none-any.whl → 0.14.9__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.
parsagon/executor.py CHANGED
@@ -219,19 +219,29 @@ class Executor:
219
219
  id_to_elem[elem_id] = elem
220
220
  visible_elem_ids = set(
221
221
  driver.execute_script(
222
- "return Array.from(document.getElementsByTagName('*')).filter((elem) => { const style = getComputedStyle(elem); return style.opacity > 0.1 && style.display !== 'none' && style.visibility === 'visible' && elem.offsetWidth && elem.offsetHeight && elem.getClientRects().length }).map((elem) => elem.getAttribute('data-psgn-id'))"
222
+ "return Array.from(document.getElementsByTagName('*')).filter((elem) => { const style = getComputedStyle(elem); const rect = elem.getBoundingClientRect(); return style.opacity > 0.1 && style.display !== 'none' && style.visibility === 'visible' && elem.offsetWidth && elem.offsetHeight && elem.getClientRects().length && rect.right + window.scrollX >= 0 && rect.bottom + window.scrollY >= 0 }).map((elem) => elem.getAttribute('data-psgn-id'))"
223
223
  )
224
224
  )
225
225
  max_elem_id = self.max_elem_ids[self.driver.current_window_handle]
226
226
  with Progress() as progress:
227
227
  for elem_id in progress.track(range(max_elem_id), description="[green]Analyzing page"):
228
228
  elem_id = str(elem_id)
229
- if elem_id in id_to_elem and elem_id not in visible_elem_ids:
230
- lxml_elem = id_to_elem[elem_id]
231
- parent = lxml_elem.getparent()
232
- if parent is not None:
233
- parent.remove(lxml_elem)
234
-
229
+ is_visible = elem_id in visible_elem_ids
230
+ if not is_visible:
231
+ try:
232
+ lxml_elem = root.xpath(f'//*[@data-psgn-id="{elem_id}"]')[0]
233
+ contains_visible = False
234
+ for descendant in lxml_elem.iterdescendants():
235
+ if descendant.get("data-psgn-id") in visible_elem_ids:
236
+ contains_visible = True
237
+ break
238
+ if contains_visible:
239
+ continue
240
+ parent = lxml_elem.getparent()
241
+ if parent is not None:
242
+ parent.remove(lxml_elem)
243
+ except IndexError:
244
+ continue
235
245
  return lxml.html.tostring(root).decode()
236
246
 
237
247
  def get_elem(self, description, elem_type):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsagon
3
- Version: 0.14.8
3
+ Version: 0.14.9
4
4
  Summary: Allows you to create browser automations with natural language
5
5
  Author-email: Sandy Suh <sandy@parsagon.io>
6
6
  Project-URL: Homepage, https://parsagon.io
@@ -5,7 +5,7 @@ parsagon/create.py,sha256=UiX6ffLPw2zF4atQxHFKBXpnlX05G1HHSn7Xi4K7tBM,3921
5
5
  parsagon/custom_function.py,sha256=oEj28qItaHUnsvLIHD7kg5QL3J3aO6rW6xKKP-H-Drs,770
6
6
  parsagon/edit.py,sha256=aLeAcp1hFHm29qh6do21cfYykK76CsHC4tc9Uh2_2bk,3006
7
7
  parsagon/exceptions.py,sha256=tG1vnpmUN1GdJ1GSpe1MaWH3zWmFLZCwtOfEGu8qPP0,910
8
- parsagon/executor.py,sha256=u5cJ75tv4eGXHqi5kvwdVsKX7v_sK3ecReB3heQKThw,24179
8
+ parsagon/executor.py,sha256=TWYYI5x708vArFNymSVQyql9JXui1yWquGqbt-ZThic,24829
9
9
  parsagon/gui_entry.py,sha256=bqG9K0CArXWWwDGoT8aV17YLNM8MfjSf6SJ_B3QbNeA,671
10
10
  parsagon/highlights.js,sha256=2UDfUApblU9xtGgTLCq4X7rHRV0wcqDSSFZPmJS6fJg,16643
11
11
  parsagon/main.py,sha256=3BskD1QPqDOfSwLGJBIn0-npNxRy5KZUtKIVNAKYwtA,9349
@@ -25,8 +25,8 @@ parsagon/tests/test_invalid_args.py,sha256=TAFdHGy92lUxjljPrtODOuEGVss6rn-F5GvEK
25
25
  parsagon/tests/test_pipeline_operations.py,sha256=aEwZNtIwOl9X7jdLDLB4YEdgMp7_x8PXCINAE7RT4NY,805
26
26
  parsagon/tests/test_print.py,sha256=BG7f55YDBoL0S7k291-so_Gje_hUAQOkB-jh-bEYsJY,198
27
27
  parsagon/tests/test_secrets.py,sha256=Ctsscl2tmMTZcFAy5dnyqUlgTov2UharZgLpbRCLdEg,2662
28
- parsagon-0.14.8.dist-info/METADATA,sha256=MXyhzpzhKURpirSGKw7blpCGu60WHQmQO6bhcpjYK74,2431
29
- parsagon-0.14.8.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
30
- parsagon-0.14.8.dist-info/entry_points.txt,sha256=I1UlPUb4oY2k9idkI8kvdkEcrjKGRSOl5pMbA6uu6kw,48
31
- parsagon-0.14.8.dist-info/top_level.txt,sha256=ih5uYQzW4qjhRKppys-WiHLIbXVZ99YdqDcfAtlcQwk,9
32
- parsagon-0.14.8.dist-info/RECORD,,
28
+ parsagon-0.14.9.dist-info/METADATA,sha256=cCWaovcXkrBuJHPaVFSgZmLenY6sann8UB9aTFF4ZRg,2431
29
+ parsagon-0.14.9.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
30
+ parsagon-0.14.9.dist-info/entry_points.txt,sha256=I1UlPUb4oY2k9idkI8kvdkEcrjKGRSOl5pMbA6uu6kw,48
31
+ parsagon-0.14.9.dist-info/top_level.txt,sha256=ih5uYQzW4qjhRKppys-WiHLIbXVZ99YdqDcfAtlcQwk,9
32
+ parsagon-0.14.9.dist-info/RECORD,,