还未发布过话题
  • 这个问题可能有几个原因。让我帮你分析并解决:

    1. 首先,检查基本问题: from playwright.sync_api import sync_playwright import time

    with sync_playwright() as p:
    browser = p.chromium.launch(
    headless=False,
    args=['--no-sandbox', '--disable-setuid-sandbox']
    )

    # 添加更详细的上下文配置
    context = browser.new_context(
    ignore_https_errors=True,
    viewport={'width': 1920, 'height': 1080}
    )

    page = context.new_page()

    # 添加等待和超时设置
    page.set_default_timeout(30000) # 30 秒超时

    print("正在访问百度...")
    response = page.goto("https://www.baidu.com", wait_until="domcontentloaded")

    if response:
    print(f"响应状态码: {response.status}")

    # 等待页面加载
    time.sleep(3)

    # 截图验证
    page.screenshot(path="baidu.png")
    print("截图已保存为 baidu.png")

    # 保持浏览器打开以便观察
    input("按回车键关闭浏览器...")

    1. 可能的原因和解决方案: 原因 1:网络代理问题 # 尝试设置代理 context = browser.new_context( ignore_https_errors=True, proxy={"server": "http://your-proxy:port"} # 如果需要代理 ) 原因 2:证书问题 # 禁用安全证书检查 context = browser.new_context( ignore_https_errors=True, accept_downloads=True ) 原因 3:使用隐身模式 # 使用隐身上下文 context = browser.new_context( ignore_https_errors=True, no_viewport=True, # 不使用默认视口 java_script_enabled=True )
    2. 调试版本: from playwright.sync_api import sync_playwright import logging

    启用详细日志

    logging.basicConfig(level=logging.DEBUG)

    with sync_playwright() as p:
    # 检查可用的浏览器
    print("可用浏览器:", p.chromium.executable_path)

    # 使用更简单的启动参数
    browser = p.chromium.launch(
    headless=False,
    slow_mo=1000, # 添加延迟以便观察
    args=[
    '--start-maximized',
    '--disable-blink-features=AutomationControlled' # 隐藏自动化特征
    ]
    )

    context = browser.new_context(
    ignore_https_errors=True,
    user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
    )

    page = context.new_page()

    # 监听控制台和网络事件
    page.on("console", lambda msg: print(f"控制台: {msg.text}"))
    page.on("response", lambda response: print(f"响应: {response.url} {response.status}"))

    try:
    print("开始导航...")
    # 尝试不同的等待策略
    response = page.goto(
    "https://www.baidu.com",
    wait_until="networkidle", # 或 "commit", "load", "domcontentloaded"
    timeout=60000
    )
    print(f"导航完成,标题: {page.title()}")

    except Exception as e:
    print(f"错误: {e}")

    input("观察页面,按回车退出...")

    1. 快速测试脚本: from playwright.sync_api import sync_playwright

    with sync_playwright() as p:
    # 最简单的配置
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()

    # 直接访问
    page.goto("https://www.baidu.com")

    # 检查是否成功
    print(f"页面标题: {page.title()}")
    print(f"页面 URL: {page.url}")

    input("如果看到百度页面,按回车退出...")
    browser.close()

    1. 如果以上都不行,尝试: 重新安装 Playwright: pip uninstall playwright pip install playwright playwright install chromium 检查端口占用: 关闭其他 Chrome/Chromium 实例 使用无头模式测试: browser = p.chromium.launch(headless=True) # 先测试无头模式 检查系统权限: 确保有足够的权限运行浏览器 在 Linux/Mac 上可能需要安装依赖 试试这些方案,看哪个能解决你的问题。如果还不行,请告诉我你的操作系统和环境信息。

    Ai,你值得拥有

  • 试试 reqable 的手机协同模式,开启后通过 vpn 转发请求,遇到无法联网的时候,一键关闭就行,再次打开也是一键打开。比较方便

  • 第一步:可以在手机上安装好号证书,先不要设置代理;第二步:打开指定的小程序等待加载完成,并且打开调试模式;第三步:手机设置代理,然后小程序上操作相关内容,可以看到抓包工具中展示开了对应获取的接口。如果上述步骤没有成功,可以重试几次。

  • 感谢楼主的无私分享,有个问题想咨询一下,如果是微信小程序,无法获取的页面的 xml,如果还是想使用存储模版的方式,那么在处理图像的时候,要依照什么方式可以标注出页面上的按钮呢?期待你的回复

  • H5 自动化测试框架推荐 at 2024年09月12日

    我们现在就是用的这个,web,ios,安卓,小程序,h5 都是

  • 你调用的 click_system_menu(),在 LoginPage,UserManagePage 这两个页面的元素都是一样的吗?

  • 你们的签名不是固定的吗?

  • 你这有什么问题?用例的收集是按照你 ini 文件里面的规则去收集的

  • 请教下 pycharm 的使用问题 at 2023年09月01日

    你应该设置下 pytest 的运行命令吧,在你的测试文件里面加上下面的代码试一试呢
    if name == 'main':
    pytest.main(['test_c.py', '-vs'])

  • Python 自动化断言如何封装 at 2023年07月11日

    首先你可以把断言是否成功或者失败抽取出来,例如设置一个变量,令初始值等于 0,在你的断言判断中,只要有一条断言没有通过,则该初始值加一。后面你只需要判断这个初始值是不是 0 就可以了,不用在意你到底有多少个断言。最后得到整体断言的结果后,写入 log 和你的 excel,当然也包括你的捕获异常