大佬可以来个邀请链接不
这个问题可能有几个原因。让我帮你分析并解决:
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("按回车键关闭浏览器...")
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("观察页面,按回车退出...")
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()
Ai,你值得拥有
试试 reqable 的手机协同模式,开启后通过 vpn 转发请求,遇到无法联网的时候,一键关闭就行,再次打开也是一键打开。比较方便
第一步:可以在手机上安装好号证书,先不要设置代理;第二步:打开指定的小程序等待加载完成,并且打开调试模式;第三步:手机设置代理,然后小程序上操作相关内容,可以看到抓包工具中展示开了对应获取的接口。如果上述步骤没有成功,可以重试几次。
感谢楼主的无私分享,有个问题想咨询一下,如果是微信小程序,无法获取的页面的 xml,如果还是想使用存储模版的方式,那么在处理图像的时候,要依照什么方式可以标注出页面上的按钮呢?期待你的回复
我们现在就是用的这个,web,ios,安卓,小程序,h5 都是
你调用的 click_system_menu(),在 LoginPage,UserManagePage 这两个页面的元素都是一样的吗?
你们的签名不是固定的吗?
你这有什么问题?用例的收集是按照你 ini 文件里面的规则去收集的
你应该设置下 pytest 的运行命令吧,在你的测试文件里面加上下面的代码试一试呢
if name == 'main':
pytest.main(['test_c.py', '-vs'])
首先你可以把断言是否成功或者失败抽取出来,例如设置一个变量,令初始值等于 0,在你的断言判断中,只要有一条断言没有通过,则该初始值加一。后面你只需要判断这个初始值是不是 0 就可以了,不用在意你到底有多少个断言。最后得到整体断言的结果后,写入 log 和你的 excel,当然也包括你的捕获异常
考研,然后主攻开发方向,211 的科班不建议一开始就做测试
很同意这个观点,找一个好的开源项目,然后取其精华应用到自己的项目中,比自己从头到尾造轮子收货要好很多
gitee 上面有很多,你可以看看
第一点:断言的确需要封装,因为接口测试中涉及到的断言种类很多,包含,长度,大小,相等,正则匹配,以及还有数数据库断言等等。
第二点:依赖封装成公共方法,这样的话你的用例最好有个编号。然后每次执行依赖就可以直接调用该用例,并且这个用例也可以用与其他接口的调用,避免重发劳动
第三点:我觉得你的框架这块需要优化下。获取用例数据生成可执行文件这块应该是公共方法,通过你的 excel 直接生成 py 文件,你的重心应该在于用例的设计。我现在感觉你在生成这块浪费的时间比较多,有点本末倒置的感觉。建议可以去看看开源的接口测试项目,了解作者的思路可能对你有些帮助
随机生成的身份证设置年龄后,省份证的出生年月固定了,这样体验不是很好
浅谈下我的观点:
第一点:测试用例里应该全是用例的数据,可能某个参数一样,导致接口返回的结果不一样,这样只需维护好你的 Excel 表就好,这跟代码没有关系。除非你的框架并没有解决用例和代码分离的问题。
第二点:关于一个接口需要依赖多个接口的问题。其实我想到有两个方法,第一个方法是控制用例的执行顺序的方法,先让依赖的接口执行,保存你需要的数据,然后再执行。第二个就是写个方法,用来判断当前用例是否有依赖的接口,如果有就先执行依赖的接口,等依赖的接口执行完成,数据都拿到后,再执行当前用例。当然这种方式最好给每个用例编写好编号,以便于调用。
第三点:对于 testcase 中,如何去减少代码维护,是不是写用例之前得先分清各个接口的共性,同一类的放在同一个 testcase 中。这个应该在你的公共方法类中对不同的接口类型进行封装,比方说 JSON ,PARAMS ,DATA ,FILE ,EXPORT,NONE 等,然后在你的用例标识出来,不用的方法走不通的逻辑。
关于新增接口,你确保新增接口的参数数据库不存在,其实这也是一个测试点,测试已有同样的数据的情况下,能不能增加相同的数据
刚试了一下,我这边用 order 是可以让用例按照运行顺序排序的

关于数据的正确性,可以采用直接从数据库获得相应的数据,然后和接口获得的数据进行比较。当然这个得你对接口的数据获取逻辑很清楚才行。至于 json 格式我记得有专门判断返回数据格式是否正确的库,可以去搜索下,应该可以解决你的问题
基本不会,除非是这个版本的浏览器在特殊要求范围内
yaml 文件时不支持参数化的,那么需要数据参数化的话可以有这个一个思路。yaml 文件里用特定的标识表示你想参数化的数据,然后读取到 yaml 文件后,识别特定的标识,并且替换掉。
七月 / Python+pytest+allure+log+yaml+mysql+ 钉钉企微通知接口自动化框架 这个框架可以,接口自动化的,基本上能满足接口自动化的要求,遇到特殊的情况可以自己修改代码。地址:https://gitee.com/yu_xiao_qi/pytest-auto-api2.git
可以交流下,我也在搞自动化方面的东西,有问题可以互相探讨
了解到你们开发设置的滑块验证的逻辑,是获取了返回值,还是把结果存到了 redis,然后通过连接 redis 手动添加 key,就能绕过验证码。或者让开发直接取消