睡眠函数和行为录制

时间:2025-10-06 02:58:41  阅读量:  分类:标签:

上一篇文章代码中,不能打印出股票搜索的结果,原因是:点击查询后,立即就去检查搜索结果了,这时,网页还没有加载完成,所以返回的是空结果、需要等待一段时间,比如 2 秒。

不能在 Playwright 中使用 time.sleep 进行等待,使用官方函数。page.wait_for_timeout()

因为 Playwright 底层使用的是异步的 python 库进行各种事件处理,time.sleep 会破坏异步框架的处理逻辑。

可以使用 Page 对象的 wait_for_timeout 方法达到同样的效果,单位是 毫秒

page.wait_for_timeout(1000)

可以打印的效果代码:学习网址:/stock.html

#引入playwright 同步api 同步api里面的 同步playwright的一个函数功能
from playwright.sync_api import sync_playwright

input('1....')
# 启动一个 playwright driver 进程、
# 启动playwright的sync_playwright()功能的start方法。
# driver 进程是一个javascriber nodjs运行的一个程序,可以在任务管理器里找到这个进程。
p = sync_playwright().start()  #start 同样会返回一个playwright的一个值,
input('2....')
# 启动浏览器,返回 Browser 类型对象p.launch、headless=False浏览器可以在界面运行、headless=True,浏览器不在界面运行,在把结果赋值给browser
browser = p.chromium.launch(headless=False,executable_path='c:\\Program Files\\Google\\Chrome\\Application\\chrome.exe')
input('3....')
#对象browser.new_page()打开一个新的浏览器标签,然后把值返回出来给变量Pahge
page = browser.new_page()
#对象page.goto、去打开你想访问的网址。
page.goto(r"E:\playwright\stock.html")
print(page.title())  # 打印网页标题栏
# 输入通讯,点击查询。这是定位与操作,是自动化重点,后文详细讲解
page.locator('#kw').fill('通讯')  # 输入通讯
page.locator('#go').click()  # 点击查询
page.wait_for_timeout(1000)
# 打印所有搜索内容
lcs = page.locator(".result-item").all()
for lc in lcs:
    print(lc.inner_text())   #后续在讲

input('4....')
# 关闭浏览器
browser.close()
input('5....')
# 关闭 playwright driver 进程
p.stop()

行为录制:

启动行为录制

playwright codegen

注意这个只能作为助手,它主要是记录人对页面的输入。

并不能取代人自己写代码,特别是那些获取页面上信息的代码。

比如,这个打印标题栏,就没法自动化生成:

print(page.title())
# 打印所有搜索内容
lcs = page.locator(".result-item").all()
for lc in lcs:
    print(lc.inner_text())

在pycharm终端输入,你的环境安装路径,或者直接。

E:\playwright\.venv\Scripts\playwright codegen
playwright codegen

执行以后你直接操作浏览器就行了,他会记录你的行为。