Javascript Cypress-从组合框ng选择器中选中所选项目

Javascript Cypress-从组合框ng选择器中选中所选项目,javascript,cypress,Javascript,Cypress,我想检查所选项目是否与所需的文本值匹配。现在我选择使用列表上的位置值,但是匹配它的代码并不完美。你有什么建议吗 fillDivision(value) { cy.get('[formcontrolname="divisionId"]').click() cy.get('[class="ng-option-label"]') .eq(value) .click() } getDivision(value){ cy.get('[role=

我想检查所选项目是否与所需的文本值匹配。现在我选择使用列表上的位置值,但是匹配它的代码并不完美。你有什么建议吗

  fillDivision(value) {
    cy.get('[formcontrolname="divisionId"]').click()
    cy.get('[class="ng-option-label"]')
      .eq(value)
      .click()
  }

  getDivision(value){
    cy.get('[role="combobox"]').contains.(value)
  }
HTML代码

<ng-select _ngcontent-c7="" bindlabel="name" bindvalue="id" class="ng-select ng-select-single ng-select-searchable ng-select-bottom ng-touched ng-dirty ng-valid ng-select-opened" formcontrolname="divisionId" role="listbox" ng-reflect-bind-label="name" ng-reflect-bind-value="id" ng-reflect-placeholder="Wybierz" ng-reflect-not-found-text="Brak" ng-reflect-select-on-tab="true" ng-reflect-items="[object Object],[object Object" ng-reflect-name="divisionId"><div class="ng-select-container ng-has-value">
    <div class="ng-value-container">
        <div class="ng-placeholder">Choose item</div>

        <!--bindings={
  "ng-reflect-ng-if": "true"
}--><!---->
            <!--bindings={
  "ng-reflect-ng-for-of": "[object Object]"
}--><div class="ng-value">
                <!---->

                <!--bindings={


<div class="ng-input">
            <input role="combobox" type="text" autocomplete="a3645360b82a" autocorrect="off" autocapitalize="off" aria-expanded="true" aria-owns="a3645360b82a" aria-activedescendant="ae1ceb98bcb2">
        </div>


<div class="ng-option ng-option-selected" role="option" aria-selected="true" id="a84a6f75bcf1">

            <!---->

            <!--bindings={
  "ng-reflect-ng-template-outlet-context": "[object Object]",
  "ng-reflect-ng-template-outlet": "[object Object]"
}-->
                <span class="ng-option-label">Item_to_check</span>

        </div>

选择项目
项目至检查

我将使用
数据测试
属性。生成唯一标识符是一种很好的模式,它使测试变得更简单、更全面。阅读更多信息。

我假设我可以通过对象的
innerText
outerText
来识别对象,但Cypress不允许这样做

1:(15)div,div,div,div,acb834143a79.ng-OP选项,div,div,ACB8341A79.ng-OP选项。ng-OP选项。ng-OP选项-标记,div,div,AEE4 4.C4404040D6.D6.6.6.6.ng-6.G-OP,div,div,A7CE777A.6.D.D.N-OP,div,div,一个AFFED.6.6.6.D-6.6.D-6.D-8.N-选项,div,div,div,div,div,div,div,选择,div,一个A.5-8-6.5-8-6.6.5-8.6.5-8.8-8.D-6.6.D-8.6.D-8.D-6.D.D-8.D-8.D-8#a90ccbee3869.ng-option,div#a90604682f2c.ng-option,div#ae68c651855a.ng-option,div#a82a56bd88d0.ng-option,div#a66361b792e6.ng-option,div#af5a67b311ae.ng-option]0:div#ae295dfb0d66.ng-option
accessKey:“
对齐:“”
assignedSlot:空
attributeStyleMap:StylePropertyMap{size:0}
属性:NamedNodeMap{0:class,1:role,2:id,class:class,role:role,id:id,length:3}
自动资本化:“
baseURI:“https://lab4.itcraft.pl:8282/"
childElementCount:1
childNodes:NodeList(8)[文本,注释,文本,注释,文本,span.ng-option-label,文本,文本]
子项:HTMLCollection[span.ng选项标签]
classList:DOMTokenList[“ng选项”,值:“ng选项”]
类名:“ng选项”
客户人数:31
clientLeft:0
客户端:0
客户宽度:242
contentEditable:“继承”
数据集:DOMStringMap{}
署长:“”
可拖动:错误
第一个孩子:文本
firstElementChild:span.ng-option-label
隐藏:假
id:“ae295dfb0d66”
innerHTML:“↵↵            ↵↵            ↵                格但斯克↵            ↵        "
内部文本:“格但斯克”
输入模式:“
断开连接:正确
isContentEditable:false
朗:“
最后一个孩子:文本
lastElementChild:span.ng-option-label
localName:“div”
名称空间URI:“http://www.w3.org/1999/xhtml"
下一个入口同级:div#a73a9e1ddfb0.ng-option
下一个选项:div#a73a9e1ddfb0.ng-option
nodeName:“DIV”
节点类型:1
nodeValue:null
暂时的:“
夜间:31
offsetLeft:0
offsetParent:div.ng-dropdown-panel-items.scroll-host
抵销:31
网外宽度:242
onabort:(…)
onauxclick:(…)
onbeforecopy:(…)
onbeforecut:(…)
onbeforepaste:(…)
onblur:(…)
oncancel:(…)
oncanplay:(…)
oncanplaythrough:(…)
一旦改变:(…)
onclick:(…)
onclose:(…)
oncontextmenu:(…)
肿瘤学:(…)
oncuechange:(…)
oncut:(…)
ondblclick:(…)
翁德拉:(…)
ondragend:(…)
ondragenter:(…)
昂德拉格利夫:(…)
ondragover:(…)
ondragstart:(…)
翁德罗普:(…)
ondurationchange:(…)
一个空的:(…)
合一:(…)
onerror:(…)
onfocus:(…)
onfullscreenchange:(…)
onfullscreenerror:(…)
ongotpointercapture:(…)
oninput:(…)
oninvalid:(…)
onkeydown:(…)
onkeypress:(…)
onkeyup:(…)
加载:(…)
onloadeddata:(…)
onloadedmetadata:(…)
onloadstart:(…)
onlostpointercapture:(…)
onmousedown:(…)
onMouseCenter:(…)
请假:(…)
onmousemove:(…)
onmouseout:(…)
onmouseover:(…)
onmouseup:(…)
onmouseheel:(…)
onpaste:(…)
暂停:(…)
在线游戏:(…)
正在播放:(…)
onpointercancel:(…)
onpointerdown:(…)
onpointerenter:(…)
onpointerleave:(…)
onpointermove:(…)
onpointerout:(…)
onpointerover:(…)
onpointerup:(…)
进展情况:(……)
汇率变动:(…)
重置时:(…)
onresize:(…)
onscroll:(…)
onsearch:(…)
一经审查:(…)
一经审查:(……)
onselect:(…)
onselectionchange:(…)
onselectstart:(…)
已安装:(…)
提交:(…)
暂停:(…)
ontimeupdate:(…)
ontoggle:(…)
onvolumechange:(…)
正在等待:(……)
onwebkitfullscreenchange:(…)
onwebkitfullscreenerror:(…)
onwheel:(…)
外部TML:“↵↵            ↵↵            ↵                格但斯克↵            ↵        "
outerText:“格但斯克”
所有者文档:文档
父元素:div
父节点:div
部分:DOMTokenList[值:”“]
前缀:空
以前的元素同级:div#a7b240bd797e.ng-option
以前的兄弟:div#a7b240bd797e.ng-option
卷轴高度:31
左:0
滚动顶部:0
卷轴宽度:242
shadowRoot:null
插槽:“
拼写检查:对
样式:CSSStyleDeclaration{alignContent:,alignItems:,alignSelf:,alignmentBaseline:,all:,…}
tabIndex:-1
标记名:“DIV”
文本内容:“↵↵            ↵↵            ↵                格但斯克↵            ↵        "
标题:“
翻译:是的
__区域符号单击错误:[区域任务]
__zone_symbol__mouseoverfalse:[ZoneTask]
__原型:HTMLDivElement
1:div#a73a9e1ddfb0.ng-option
2:div#acb834143a79.ng-option
3:div#aee4c4947524.ng-option
4:div#a7ce7a564daa.ng-option.ng-option-marked
5:分区a5afbfed816d.ng-option
6:div#ae097ef81dc2.ng-option
7:div#a48cdbf7f2da.ng-option
8:div#aa18d929cb28.ng-option
9:div#a90ccbee3869.ng-option
10:div#a90604682f2c.ng-option
11:div#ae68c651855a.ng-option
12:div#a82a56bd88d0.ng-option
13:div#a66361b792e6.ng-option
14:分区af5a67b311ae.ng-option
长度:15
__原型:数组(0)
要素:15

cypress_runner.js:174490选择器:[class=“ng option”]

似乎是合理的,但是,我不是web开发人员,也不可能更改网站代码。另一种选择是使用
id
,这应该是唯一的。知道为什么我不能只使用
cy.get('[class=“ng option label”]))
当项目包含
要检查的项目时
?因为我刚才检查的ID在每个会话中生成的方式不同-所以这里的方法根本不起作用。