柏树:如何从字符串中复制/粘贴单个文本单词,以便稍后粘贴



我是stackoverflow的新手,所以很抱歉,如果这有点到处都是,但我似乎找不到任何简单的在线答案,似乎是一个相当小的任务!(

我正试图从弹出窗口复制一些数据,上面写着"祝贺,您的Ref (REF1234)成功完成"之类的内容。(只是REF1234部分)并复制它粘贴到下一个屏幕上的另一个字段…这是我到目前为止所拥有的,希望对某人有意义…

export function addRefToThing() {    
cy.get('[class="ref-success"]').find(':selected').contains('REF').then(($clipboard) => {
const copiedRef = $clipboard[0]._vClipboard.clipboardAction.text;
// <<filler steps, moving around pages>> //
webpage.RefNo().type(copiedRef)})

这几乎是我所能得到的,让我心烦意乱…看起来它被困在-find :selected,但实际上不确定它甚至复制了我想要的数据…

我对柏树很陌生,所以这很令人困惑,如果有人有关于这种要求的好的培训材料,那就太棒了!提前感谢!

HTML:

<div class="notification-group" style="width: 300px; bottom: 0px; right: 0px;">
<span>
<div data-id="1" class="notification-wrapper" style="transition: all 300ms ease 0s;">
<div class="notification-template notification success">
<div class="notification-title">Successful</div>
<div class="notification-content">Ref (REF123456789) created successfully</div>
</div>
</div>
</span>
</div>

尝试使用正则表达式解析ref.

使用/(REF([0-9]+))/你得到两个匹配,

  • 匹配[0]是整个"(REF123456789)"
  • matches[1]是内部组"123456789">
cy.get('div.notification-content')
.then($el => $el.text().match(/(REF([0-9]+))/)[1])  // parsing step
.then(ref => {
webpage.RefNo().type(ref)
})

在你的函数中,

export function addRefToRef() {    
cy.get('[class="ref-success"]').find(':selected').contains('REF')
.then(($clipboard) => {
const copiedRef = $clipboard[0]._vClipboard.clipboardAction.text;
const innerRef = copiedRef.match(/(REF([0-9]+))/)[1];
// <<filler steps, moving around pages>> //
webpage.RefNo().type(innerRef)
})
}

您可以直接从notification-contentdiv中保存内部文本值,稍后使用。你不必使用剪贴板方法。

//Some code that will trigger the notification
cy.get('.notification-content')
.should('be.visible')
.invoke('text')
.then((text) => {
cy.log(text) //prints Ref (REF123456789) created successfully
})

如果您想保存它,然后在稍后的测试中使用它,您可以使用别名.as:

//Some code that will trigger the notification
cy.get('.notification-content')
.should('be.visible')
.invoke('text')
.as('notificationText')
//Some other code
cy.get('@notificationText').then((notificationText) => {
cy.log(notificationText) //prints Ref (REF123456789) created successfully
})

或者,如果你想断言内容:

  1. 精确匹配:
cy.get('.notification-content')
.should('be.visible')
.and('have.text', 'Ref (REF123456789) created successfully')
  1. 部分匹配
cy.get('.notification-content')
.should('be.visible')
.and('include.text', 'REF123456789')

如果你只想提取参考编号,那么你必须首先使用split来获取第二个文本,然后使用slice来删除左括号和右括号,就像这样:

//Some code that will trigger the notification      
cy.get('.notification-content').should('be.visible').invoke('text').as('notificationText')
//Some other code
cy.get('@notificationText').then((notificationText) => {
cy.log(notificationText.split(' ')[1].slice(1,-1))  //REF123456789 
})

相关内容

  • 没有找到相关文章