在Playwright自动化测试中,获取DOM元素的value属性是常见的需求,很多时候我们不需要触发点击、输入等页面交互,就能直接拿到目标属性的值,这种方式可以减少脚本执行的不确定性,提升运行效率。

获取value属性的核心原理
DOM元素的value属性属于元素的固有属性,不需要用户交互就会存在于元素的属性集合中。Playwright提供了get_attribute方法,可以直接读取元素指定属性的值,不需要触发任何页面交互操作,只要元素已经加载到DOM中就可以调用该方法获取value属性。
基础获取方式
最基础的获取方式是先定位到目标元素,再调用get_attribute方法传入value参数,示例代码如下:
from playwright.sync_api import sync_playwright
def get_input_value():
with sync_playwright() as p:
# 启动浏览器
browser = p.chromium.launch(headless=False)
page = browser.new_page()
# 访问测试页面,这里使用本地测试地址
page.goto("http://127.0.0.1:8080/test.html")
# 定位目标input元素,这里通过id定位
input_element = page.locator("#username")
# 获取value属性,无需任何交互
value = input_element.get_attribute("value")
print(f"获取到的value值为:{value}")
browser.close()
if __name__ == "__main__":
get_input_value()
不同场景的处理方式
元素未立即加载的场景
如果目标元素不是页面初始加载就存在的,比如通过接口动态渲染的,需要先等待元素出现再获取属性,避免获取到None值:
from playwright.sync_api import sync_playwright
def get_dynamic_value():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto("http://127.0.0.1:8080/dynamic.html")
# 等待元素出现,最多等待10秒
page.wait_for_selector("#dynamic_input", timeout=10000)
# 获取value属性
value = page.locator("#dynamic_input").get_attribute("value")
print(f"动态元素的value值:{value}")
browser.close()
多个同类元素的批量获取
如果需要获取多个同类元素的value属性,可以使用locator的all方法批量处理:
from playwright.sync_api import sync_playwright
def get_multi_values():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto("http://127.0.0.1:8080/multi.html")
# 定位所有class为item_input的元素
elements = page.locator(".item_input").all()
values = []
for ele in elements:
# 逐个获取value属性
val = ele.get_attribute("value")
if val:
values.append(val)
print(f"批量获取到的value值列表:{values}")
browser.close()
注意事项
- 如果元素的value属性是通过JavaScript动态修改的,只要修改操作已经完成,同样可以直接用
get_attribute获取,不需要模拟触发修改操作。 - 对于<textarea>元素,其value属性获取方式和普通input元素一致,同样使用
get_attribute("value")即可。 - 如果获取到的value为None,先检查元素是否已经被正确定位,或者元素是否真的存在value属性。
常见问题解答
为什么获取到的value是空字符串
空字符串说明元素存在value属性,只是属性值为空,不是获取失败,这种情况属于正常结果,不需要额外处理。
能否获取隐藏元素的value属性
可以,get_attribute方法不需要元素可见,只要元素存在于DOM中就可以获取其属性值,不需要任何页面交互。
PlaywrightDOM元素value属性自动化测试修改时间:2026-07-23 10:21:22