WordPress 的插件和主题更新界面都有一个“全选”复选框。使用 Playwright 对其调用 check() 方法会成功——没有错误,也没有异常。但随后查看各个单独的复选框时,有时会发现它们实际上并未被勾选。
注意:Playwright 的
check()方法用于勾选复选框。即使页面的 JavaScript 事件处理程序从未触发,点击操作本身也可能成功,从而导致表单实际提交的内容与屏幕视觉显示的内容不同步。
实际发生的情况
“全选”复选框通常通过 JavaScript 事件处理程序进行绑定:点击它应该会勾选其下方的所有单独复选框。Playwright 的 check(force=True) 可以强制设置该复选框在文档对象模型(DOM)中的状态——但这仅改变该复选框自身的状态。它并不能保证本应将更改传播到各个单独复选框的 JavaScript 事件处理程序确实被触发。
# 看起来成功了,但各个单独的复选框仍未被勾选
select_all.first.check(force=True)
page.click('input[type="submit"][name="upgrade"]')
点击更新按钮会提交表单的实际状态——即“未勾选任何项”。因此没有任何内容得到更新。由于没有抛出错误,表面上看运行似乎正常完成。
修复方法——每次勾选后立即验证
在勾选“全选”后,立即确认其下方的各个单独复选框是否确实已被勾选。如果未被勾选,则回退为逐个勾选每个复选框。
sel_all_sel = 'input[type="checkbox"][id^="plugins-select-all"]'
select_all = plugin_form.locator(sel_all_sel)
if select_all.count() > 0:
select_all.first.check(force=True)
page.wait_for_timeout(500)
# 验证步骤——确认复选框确实已被勾选
chk_sel_check<
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。
分享到:
长按或扫码识别 分享给好友