te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Can we test if element text includes text_ A or text_B with cypress? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Can we test if element text includes text_ A or text_B with cypress? - Stack Overflow

programmeradmin2浏览0评论

Just wondering if there is a way to test that an element contains text_A or text_B with cypress. For example, I have an element that is filled with the error returned from an API request and I want to check whether the error message includes text_A or text_B. Tried the following code but it works only if text_A is present and fails when text_B is returned.I don't get any error for invalid syntax from cypress, any help would be appreciated.

 cy.get('body').then((body) => { 
     if (body.find('#request-error').length > 0) { 
         cy.get('#request-error').then((el)=> {
              assert.include(el.text(), ('text_A' || 'text_B')); 
         });
     } else {
         // DO SOMETHING ELSE
     }
 });

Just wondering if there is a way to test that an element contains text_A or text_B with cypress. For example, I have an element that is filled with the error returned from an API request and I want to check whether the error message includes text_A or text_B. Tried the following code but it works only if text_A is present and fails when text_B is returned.I don't get any error for invalid syntax from cypress, any help would be appreciated.

 cy.get('body').then((body) => { 
     if (body.find('#request-error').length > 0) { 
         cy.get('#request-error').then((el)=> {
              assert.include(el.text(), ('text_A' || 'text_B')); 
         });
     } else {
         // DO SOMETHING ELSE
     }
 });
Share Improve this question edited Oct 8, 2019 at 13:47 KoKa asked Oct 8, 2019 at 13:42 KoKaKoKa 8172 gold badges15 silver badges32 bronze badges 3
  • Try cy.get('#request-error').contains(/text_A|text_B/g), from this question Cypress expect element to contain one string or another string – Ackroydd Commented Oct 9, 2019 at 23:36
  • 1 Hi @Ackroydd thanks for the answer. I managed to make it work using the idea described to the link you provided. const runout = ['text_A', 'text_B'] const regex = new RegExp(`${runout.join('|')}`) const text = el.text() expect(text).to.match(regex) – KoKa Commented Oct 10, 2019 at 7:54
  • Just one additional thing, you're doing this within the .then((el) => .... Did you try out .contains(regex)? I notice from your ment to Cory that there's a substring factor and was wondering if that scenario also works with the simpler .contains(regex). – Ackroydd Commented Oct 10, 2019 at 19:56
Add a ment  | 

2 Answers 2

Reset to default 8

Essentially you have an array of possible error messages, so you can test if the element's text exists within that array.

expect(['text_A', 'text_B']).to.include(el.text())

Another option that reads better would be to use .oneOf

expect(el.text()).to.be.oneOf(['text_A', 'text_B']);

https://docs.cypress.io/guides/references/assertions.html#BDD-Assertions

I am late but you can do it with satisfy:

 cy.get('.text-element').invoke('text').then(text => {
      expect(text).to.satisfy((mText: string) => possibleMatchesArray.includes(mText));
 });
发布评论

评论列表(0)

  1. 暂无评论