公司后台管理项目,做oms订单的自动化测试
playwright很好用,可以录制操作,然后对应修改下代码就可以用了,
但是使用过程中,遇到几个问题,处理了2天,记录下
有个元素是要鼠标hover才能显示别的内容,但是怎么就是hover失败
解决:
page1.evaluate('''(td) => {
td.classList.remove("is-hidden");
}''', eighth_td)
鼠标滚动不动
解决:
先将鼠标移动到页面中间
page.mouse.move(500, 500)
模拟鼠标滚轮滚动
page.mouse.wheel(0, 500) # 向下滚动 500 像素
等待页面完全加载
page.wait_for_load_state("networkidle") # 等待网络空闲
page.wait_for_timeout(2000) # 额外等待 2 秒
检查页面是否有阻止滚动的 CSS
console.log(window.getComputedStyle(document.body).overflow);
console.log(window.getComputedStyle(document.documentElement).overflow);
如果 overflow: hidden,可以临时移除:
Copypage.evaluate('''() => {
document.body.style.overflow = 'auto';
document.documentElement.style.overflow = 'auto';
}''')
打开浏览器调试模式:
browser = playwright.chromium.launch(headless=False, slow_mo=1000)
手动测试滚动:
控制台手动运行以下代码,看是否可以滚动:
Copydocument.querySelector(".el-table__body-wrapper").scrollTo(0, 500);
检查元素位置:
在控制台运行以下代码,确认元素的位置和容器:
Copyconst td = document.querySelector(".el-table__row td:nth-child(8)");
const container = document.querySelector(".el-table__body-wrapper");
console.log("td 位置:", td.getBoundingClientRect());
console.log("容器位置:", container ? container.getBoundingClientRect() : "无容器");