javascript - 使用 Puppeteer 禁用检查元素
问题描述
我有一个初始状态为disabled
-
<button type = "submit" class="ant-btn ant-btn-primary ant-btn-lg" disabled>
disabled
一旦满足条件,该属性就不存在 - 因此 HTML 变为
<button type = "submit" class="ant-btn ant-btn-primary ant-btn-lg">
我想检查按钮是否具有属性disabled
,但是由于该属性没有任何值,我无法找到这样做的方法。
例如,如果disabled
属性有这样的东西
<button type = "submit" class="ant-btn ant-btn-primary ant-btn-lg" disabled = "disabled">
然后我可以做这样的事情
let button = await page.$('button');
let valueHandle = await input.getProperty('disabled');
assert.equal(await valueHandle.jsonValue(), 'disabled');
但是由于该属性没有值,在这种情况下如何进行?
解决方案
这是一个全面的解决方案,展示了如何使用以下方法解决您的问题:
page.$()
, page.$$()
, page.$eval()
, page.$$eval()
, page.$x()
, 和page.evaluate()
.
// Using page.$()
const is_disabled = await page.$('button[disabled]') !== null;
// Using page.$$()
const is_disabled = (await page.$$('button[disabled]')).length !== 0;
// Using page.$eval()
const is_disabled = await page.$eval('button[disabled]', button => button !== null).catch(error => error.toString() !== 'Error: Error: failed to find element matching selector "button[disabled]"');
// Using page.$$eval()
const is_disabled = await page.$$eval('button[disabled]', buttons => buttons.length !== 0);
// Using page.$x()
const is_disabled = (await page.$x('//button[@disabled]')).length !== 0;
// Using page.evaluate()
const is_disabled = await page.evaluate(() => document.querySelector('button[disabled]') !== null);
推荐阅读
- reactjs - 如何限制用户登录时使用登录页面
- amazon-web-services - 云中的微积分器主机名问题
- unity3d - 在c#/Unity中销毁预制对象的特定子对象
- web-applications - 无需提示登录即可打开安全 Web AppBuilder
- excel - 如何将 vba sub 转换为函数?
- string - 在计算移动平均线时无法将字符串转换为浮点数
- http - http.Request.Clone() 不是深度克隆?
- javascript - 接口的按位“或”运算符是什么意思
- c++ - 不要使用 Bazel 破坏共享库的名称
- python - 将图像加载为 TensorFlow 数据集并输入 Keras model.fit 的工作流程?