获取data-*属性值

博客介绍了获取特定值的几种方法,包括 getAttribute() 方法、dataset() 方法、jquery data() 方法以及 jquery attr() 方法。

原文:https://blog.youkuaiyun.com/jx950915/article/details/78931509

 

获取的就是data-id 和 dtat-vice-id的值

<li id="getId" data-id="122" data-vice-id="11">获取id</li>

一:getAttribute()方法

const getId = document.getElementById('getId');
// //getAttribute()取值属性
console.log(getId.getAttribute("data-id"));//122
console.log(getId.getAttribute("data-vice-id"));//11
// //setAttribute()赋值属性
getId.setAttribute("data-id","48");
console.log(getId.getAttribute("data-id"));//48

二:dataset()方法

//data-前缀属性可以在JS中通过dataset取值,更加方便
console.log(getId.dataset.id);//112
//data-vice-id连接取值使用驼峰命名法取值 
console.log(getId.dataset.viceId);//11

//赋值
getId.dataset.id = "113";//113
getId.dataset.viceId--;//10

//新增data属性
getId.dataset.id2 = "100";//100

//删除,设置成null,或者delete
getId.dataset.id2 = null;//null
delete getId.dataset.id2;//undefind

三:jquery data()方法

var id = $("#getId").data("id"); //122
var viceId = $("#getId").data("vice-id"); //11
//赋值
$("#getId").data("id","100");//100

四:jquery attr()方法

var id = $("#getId").attr("data-id"); //122
var viceId = $("#getId").attr("data-vice-id"); //11
//赋值
$("#getId").attr("data-id","100");//100

 

### 获取元素的 `data-*` 属性值 在 Cypress 中,可以通过多种方式获取元素的 `data-*` 属性值。由于 `data-*` 属性是 HTML5 中用于存储自定义数据的推荐方式,因此在测试中经常用于元素的定位和属性验证。 #### 使用 `.attribute()` 方法获取 `data-*` 属性值 Cypress 提供了 `.attribute()` 方法,用于获取元素的任意属性值,包括 `data-*` 属性。例如,如果页面中有一个 `<img>` 标签包含 `data-user-id` 属性,可以通过以下方式获取: ```javascript cy.get('img').attribute('data-user-id').then((value) => { expect(value).to.equal('12345'); }); ``` 该方法直接返回属性值,并支持在后续断言中使用,确保属性值符合预期 [^3]。 #### 使用 `.invoke('attr', 'data-*')` 方法获取 `data-*` 属性值 除了 `.attribute()` 方法外,还可以通过 `.invoke('attr', 'data-*')` 来获取 `data-*` 属性值。这种方式利用了 jQuery 的 `attr` 方法,适用于更复杂的属性操作: ```javascript cy.get('[data-test-id="user-profile"]').invoke('attr', 'data-test-id').should('equal', 'user-profile'); ``` 此方法支持链式调用,并可结合 `.should()` 进行断言,确保属性值的正确性 [^2]。 #### 使用 `.should('have.attr', 'data-*', 'value')` 进行属性断言 Cypress 支持通过 `.should('have.attr', 'data-*', 'value')` 直接对 `data-*` 属性进行断言,无需额外调用方法获取: ```javascript cy.get('[data-user-role="admin"]').should('have.attr', 'data-user-role', 'admin'); ``` 该方式简洁高效,适用于测试中对元素属性值的验证 [^2]。 #### 通过 `data-cy`、`data-test` 或 `data-testid` 定位并获取属性 在实际测试中,通常推荐使用语义明确的 `data-*` 属性进行元素定位和属性获取。例如: ```javascript cy.get('[data-cy="submit-button"]').should('have.attr', 'data-cy', 'submit-button'); cy.get('[data-test="login-field"]').invoke('attr', 'data-test').should('equal', 'login-field'); cy.get('[data-testid="username-input"]').attribute('data-testid').then((id) => { expect(id).to.equal('username-input'); }); ``` 这些属性不会受到 UI 变化的影响,适合用于测试脚本的维护 [^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值