我有一个Vue.js项目(Nuxt.js),我使用Vuetify作为UI。对于e2 e测试,我使用Cypress。
下面是我在Cypress的测试场景:
我在为使用v-autocomplete组件的页面创建测试时遇到问题。问题是我无法使用Vuetify原生类来获取我要测试的元素。下面是一个使用data-cy选择器的示例
<v-autocomplete
v-model="model"
:items="items"
item-text="Description"
item-value="API"
label="Public APIs"
placeholder="Start typing to Search"
data-cy="autocomplete"
></v-autocomplete>
字符串
我键入一些文本到搜索输入.然后在v-自动完成已经找到搜索结果.和例子之一有下面:
...
<div>
<a class="v-list__tile v-list__tile--link theme--light">
<div class="v-list__tile__content">
<div class="v-list__tile__title">Result item
<span class="v-list__tile__mask">result item</span>
</div>
</div>
</a>
</div>
...
型
然后,我想通过点击找到的结果之一选择搜索项目之一.为此,我应该使用Vuetify的原生类,但它不是有稳定性(.v-list__tile--link
类可以由开发人员重命名).我如何可以添加数据cy选择器到结果搜索html项目?也许谁知道任何其他方法来解决这个问题?
1条答案
按热度按时间fcg9iug31#
我不认为
v-list__tile--link
可以被开发人员更改,它似乎是由Vuetify库在运行时添加的DOM(除非你指的是Vuetify开发人员,那么肯定它可以在版本之间更改)。在任何情况下,如果您希望选择器更面向内容,请使用Cypress.parent()选择器
比如说,
字符串
如果可能的话,确保**itemTextToSelect '**是真正独特的(如果您可以在测试夹具中设置它)。
顺便说一句,在用户开始输入之前,自动完成列表是
display: none
,所以你需要在输入中输入.type('something')
,或者在输入中输入.click({force: true})
。