在 Python 的 Playwright 中,我如何获取与 ElementHandle 相关的元素(孩子、父母、祖父母、兄弟姐妹)?

Posted

技术标签:

【中文标题】在 Python 的 Playwright 中,我如何获取与 ElementHandle 相关的元素(孩子、父母、祖父母、兄弟姐妹)?【英文标题】:In Playwright for Python, how do I get elements relative to ElementHandle (children, parent, grandparent, siblings)? 【发布时间】:2021-03-31 16:35:34 【问题描述】:

在 playwright-python 中,我知道我可以使用 querySelector() 获得 elementHandle

示例(同步):

from playwright import sync_playwright

with sync_playwright() as p:
    for browser_type in [p.chromium, p.firefox, p.webkit]:
        browser = browser_type.launch()
        page = browser.newPage()  
        page.goto('https://duckduckgo.com/')
        element = page.querySelector('input[id=\"search_form_input_homepage\"]')
    

如何根据elementHandle 获取与此相关的 an 元素? IE。父母、祖父母、兄弟姐妹、孩子的句柄?

【问题讨论】:

【参考方案1】:

querySelector() / querySelectorAll 与 XPath (XML Path Language) 允许您检索elementHandle(分别是句柄的集合)。一般来说,XPath 可用于在 XML 文档中导航元素和属性。

from playwright import sync_playwright

with sync_playwright() as p:
    for browser_type in [p.chromium, p.firefox, p.webkit]:
        browser = browser_type.launch(headless=False)
        page = browser.newPage()
        page.goto('https://duckduckgo.com/')
        element = page.querySelector('input[id=\"search_form_input_homepage\"]')
        
        parent = element.querySelector('xpath=..')
        grandparent = element.querySelector('xpath=../..')
        siblings = element.querySelectorAll('xpath=following-sibling::*')
        children = element.querySelectorAll('xpath=child::*')

        browser.close()

【讨论】:

以上是关于在 Python 的 Playwright 中,我如何获取与 ElementHandle 相关的元素(孩子、父母、祖父母、兄弟姐妹)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PlayWright (python) 下载嵌入式 PDF?

python+playwright 学习-10.pytest-playwright插件编写测试用例

如何使用 playwright-python 处理多个页面?

Python Playwright 基本使用(步骤详细)

python+playwright 学习-4.操作iframe

使用 Playwright for Python,如何选择(或查找)元素?