我剛開始開發一個新的測試項目,為 ExtJS 應用程式新增 Cypress 測試。 ExtJS 使用動態 ID,因此我們使用不同的選擇器來識別元素。
現在,如果我使用簡單的 Javascript,我可以取得 poperties 並呼叫所選元素的方法,如下所示:
ele = document.getElementById('tdscombo-1108') <div class="x-field x-form-item x-form-item-default x-form-type-text x-field-default x-anchor-form-item" role="presentation" id="tdscombo-1108" data-cy="broadcast_type" style="width: 625px;">…</div> ele.id 'tdscombo-1108' ele.role 'presentation' ele.style CSSStyleDeclaration {0: 'width', accentColor: '', additiveSymbols: '', alignContent: '', alignItems: '', alignSelf: '', …}` ele.getAttribute('data-cy') 'broadcast_type'
與 Cypress 合作並使用 cy.get 執行相同操作時,
cy.get('[data-cy="broadcast_type"]').invoke('attr','data-cy')
和
cy.get('[data-cy="broadcast_type"]').its('data-cy')
兩者都傳回 Cypress $Chainer 物件。我不知道那是什麼。
我最接近的是跑步
cy.get('[data-cy="broadcast_type"]').then((elem) => {Object.values(elem[0].attributes).forEach((v) => { console.log(v )})});
這給了我
class="x-field x-form-item x-form-item-default x-form-type-text x-field-default x-anchor-form-item x-field-focus" role="presentation" id="tdscombo-1225" data-cy="broadcast_type" style="width: 625px;"
These each seem like some kind of object 和 I am unable to access the properties like so: v.id
. It says undefined
.
我只是希望能夠像上面簡單的 Javascript 中那樣以鍵值對的形式存取這些屬性。
這是 ExtJS 組合框
P粉3421016522024-03-31 10:51:00
好吧,您已經在某處給出了答案,但我可以為您澄清。
這些是 Javascript、jQuery 和 Cypress 的等值:
// getting the element const element = document.getElementById('tdscombo-1108') // js const $element = Cypress.$('tdscombo-1108') // jQuery cy.get('#tdscombo-1108').then($element => { // Cypress
// getting role element.getAttribute('role') // js $element.attr('role') // jQuery cy.get('#tdscombo-1108').invoke('attr', 'role').then(role => { // Cypress
// getting width element.style.width // js $element.css('width') // jQuery cy.get('#tdscombo-1108').invoke('css', 'width').then(width => { // Cypress
如果您在即時頁面上練習一些變體,您就會學到這些變體。