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

576*_*76i 4 python webautomation playwright playwright-python

我正在尝试学习 Python 版本的 Playwright。看这里

我想学习如何定位一个元素,以便我可以用它做事。就像打印内部 HTML,点击它等等。

下面的示例加载页面并打印 HTML

from playwright import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.newPage()
    page.goto('http://whatsmyuseragent.org/')
    print(page.innerHTML("*"))
    browser.close()
Run Code Online (Sandbox Code Playgroud)

此页面包含一个元素

<div class="user-agent">
    <p class="intro-text">Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4238.0 Safari/537.36</p>
</div>
Run Code Online (Sandbox Code Playgroud)

使用 Selenium,我可以找到元素并像这样打印它的内容

elem = driver.find_element_by_class_name("user-agent")
print(elem)
print(elem.get_attribute("innerHTML"))
Run Code Online (Sandbox Code Playgroud)

我怎样才能在剧作家中做同样的事情?

Upe*_*dra 10

接受的答案不适用于较新版本的 Playwright。(感谢@576i指出这一点)

以下是适用于较新版本的 Python 代码(使用版本 1.5 进行测试):

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto('http://whatsmyuseragent.org/')
    ua = page.query_selector(".user-agent");
    print(ua.inner_html())
    browser.close()
Run Code Online (Sandbox Code Playgroud)

要仅获取文本,请使用该inner_text()函数。

print(ua.inner_text())
Run Code Online (Sandbox Code Playgroud)


har*_*ded 5

您可以使用该querySelector函数,然后调用该innerHTML函数:

handle = page.querySelector(".user-agent")
print(handle.innerHTML())
Run Code Online (Sandbox Code Playgroud)

  • 在 Python 中,它将是 `page.query_selector(".user-agent)` (3认同)
  • 请注意,Python 的剧作家已将较新版本的语法从“querySelector”更改为“query_selector”...如果您发现其他旧的、不再工作的剧作家答案,这可能就是原因。 (2认同)