You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright中is_visible()方法对页面标题始终返回False的问题

问题解决方案

问题原因

你用page.get_by_title('panda at DuckDuckGo')找的是页面中带有title属性的元素(比如<a title="示例链接">这类元素),而非HTML头部的<title>标签。页面的<title>标签属于不可见的元数据,不会在可视区域内显示,所以调用is_visible()自然返回False,这和页面标题本身是否存在是两回事。

解决方法

  • 如果你只是需要确认页面标题正确,你已经通过expect(page).to_have_title('panda at DuckDuckGo')完成了验证,这一步就足够,无需额外调用is_visible()。
  • 如果一定要检查<title>标签的状态,应该用exists()确认标签存在,或者直接对比标题文本:

修正后的代码示例

from playwright.sync_api import sync_playwright
from playwright.sync_api import expect, Page


with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=1000)
    context = browser.new_context()
    page = context.new_page()
    page.goto('https://www.duckduckgo.com')
    page.locator('#search_form_input_homepage').fill('panda')
    page.locator('#search_button_homepage').click()
    
    # 验证页面标题(这一步已足够确认标题正确性)
    expect(page).to_have_title('panda at DuckDuckGo')
    print(page.title())
    
    # 方法1:直接对比标题文本判断是否符合预期
    print(page.title() == 'panda at DuckDuckGo')  # 输出True
    
    # 方法2:定位<title>标签,检查其是否存在(而非可见性)
    print(page.locator('title').exists())  # 输出True,确认标签存在

内容的提问来源于stack exchange,提问作者akuan10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:39:59