如何获得赛普拉斯仅仅用于处理可见元素?

时间:2019-02-07 13:31:01

标签: cypress

我正在尝试使用这一元素:

cy.get('[data-cy-component=single-picker-search] input').type('Live');

当我运行它时,它告诉我其中有1个以上,因此无法执行。

我尝试添加{force:true}-没什么区别。

我尝试查看每个元素,但是如果该元素不可见,则会失败:

cy.get(singlePickerSearch).each(($el) => {
          cy.wrap($el)
            .type('Live' + '{enter}');
        });

如何仅在元素可见的位置键入内容?我不希望它失败。

2 个答案:

答案 0 :(得分:6)

这对我尝试获得的按钮不起作用:

cy.get('[data-cy-component=single-picker-search] button:visible')

这就是对我有用的东西:

cy.get('[data-cy-component=single-picker-search]').filter(':visible')

答案 1 :(得分:2)

知道了。您可以使用伪选择器DATA: dummy_price TYPE sflight-price. SELECT-OPTIONS sum_y1 FOR dummy_price DEFAULT 0 TO 99999. SELECT-OPTIONS sum_y2 FOR dummy_price DEFAULT 0 TO 99999. SELECT substring( fldate, 1, 4 ) AS year, MIN( fldate ) AS low, MAX( fldate ) AS high FROM sflight GROUP BY substring( fldate, 1, 4 ) ORDER BY year INTO TABLE @DATA(y). ASSERT lines( y ) >= 2. SELECT carrid, SUM( CASE WHEN fldate BETWEEN @( y[ 1 ]-low ) AND @( y[ 1 ]-high ) THEN price END ) AS sum_year1, SUM( CASE WHEN fldate BETWEEN @( y[ 2 ]-low ) AND @( y[ 2 ]-high ) THEN price END ) AS sum_year2 FROM sflight GROUP BY carrid HAVING SUM( CASE WHEN fldate BETWEEN @( y[ 1 ]-low ) AND @( y[ 1 ]-high ) THEN price END ) IN @sum_y1[] AND SUM( CASE WHEN fldate BETWEEN @( y[ 2 ]-low ) AND @( y[ 2 ]-high ) THEN price END ) IN @sum_y2[] ORDER BY SUM_YEAR1 DESCENDING, SUM_YEAR2 DESCENDING " <=== this works """"ORDER BY ('SUM_YEAR1 DESCENDING, SUM_YEAR2 DESCENDING') " <=== uncomment for short dump INTO TABLE @DATA(sflights). LOOP AT sflights ASSIGNING FIELD-SYMBOL(<sflight>). WRITE : / <sflight>-carrid, <sflight>-sum_year1, <sflight>-sum_year2. ENDLOOP. ,以便能够完成

:visible

或者如果可见多个,请选择第一个可见输入

cy.get('[data-cy-component=single-picker-search] input:visible').type(...)