使用 Playwright for Python,如何 select(或查找)元素?
Using Playwright for Python, how do I select (or find) an element?
我正在尝试学习 Playwright 的 Python 版本。参见 here
我想学习如何定位一个元素,这样我就可以
它的东西。比如打印里面的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()
此页面包含一个元素
<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>
使用 Selenium,我可以找到元素并像这样打印它的内容
elem = driver.find_element_by_class_name("user-agent")
print(elem)
print(elem.get_attribute("innerHTML"))
如何在 Playwright 中执行相同的操作?
#UPDATE# - 请注意,如果您想在 2021 年以后 运行 这样做,当前版本的 playwright 已将语法从 CamelCase 更改为 snake_case。
可以使用querySelector
函数,然后调用innerHTML
函数:
handle = page.querySelector(".user-agent")
print(handle.innerHTML())
根据最新官方 python version Playwright,你应该使用:
-> 代码:
# userAgentSelector = ".user-agent"
userAgentSelector = "div.user-agent"
elementHandle = page.query_selector(userAgentSelector)
uaHtml = elementHandle.inner_html()
print("uaHtml=%s" % uaHtml)
已接受的答案不适用于较新版本的 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()
要仅获取文本,请使用 inner_text()
函数。
print(ua.inner_text())
我正在尝试学习 Playwright 的 Python 版本。参见 here
我想学习如何定位一个元素,这样我就可以 它的东西。比如打印里面的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()
此页面包含一个元素
<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>
使用 Selenium,我可以找到元素并像这样打印它的内容
elem = driver.find_element_by_class_name("user-agent")
print(elem)
print(elem.get_attribute("innerHTML"))
如何在 Playwright 中执行相同的操作?
#UPDATE# - 请注意,如果您想在 2021 年以后 运行 这样做,当前版本的 playwright 已将语法从 CamelCase 更改为 snake_case。
可以使用querySelector
函数,然后调用innerHTML
函数:
handle = page.querySelector(".user-agent")
print(handle.innerHTML())
根据最新官方 python version Playwright,你应该使用:
-> 代码:
# userAgentSelector = ".user-agent"
userAgentSelector = "div.user-agent"
elementHandle = page.query_selector(userAgentSelector)
uaHtml = elementHandle.inner_html()
print("uaHtml=%s" % uaHtml)
已接受的答案不适用于较新版本的 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()
要仅获取文本,请使用 inner_text()
函数。
print(ua.inner_text())