很抱歉问这个。我在使用柏树时比较陌生。 我有两个选择。 #firstSelect和#secondSelect。
起初我尝试使用静态值,例如
cy
.get("#firstSelect").select('1')
.get("#secondSelect").select('2')
这很好,但是当我动态放置值时。
cy.server()
cy.route('POST', 'url').as("secondSelect")
cy.get("#firstSelect").each( ($el, idxFs) => {
cy.get('#firstSelect').select($el.get(0).value)
.wait('@secondSelect').then( function(xhr) {
//code in selecting a value for the secondSelect
}
})
能够在firstSelect中选择一个值。
在动态方面我做错了什么?
对于这种情况,任何其他方法都将提供巨大帮助!谢谢!
答案 0 :(得分:0)
听起来您只需要断言发生了以下事情,并且它是按顺序发生的:
1)已填充#firstSelect
2)发生了发布请求
3)已填充#secondSelect
这相对简单:
cy.server()
cy.route('POST', 'url').as("updateServer")
// Wait for #firstSelect to be populated, assumes #firstSelect is the surrounding <ul>
cy.get("#secondSelect").children().should("have.length", 10);
// Again, this assumes #firstSelect is the parent
cy.get("#firstSelect").children().each( ($el, idxFs) => {
// Using .should() here makes Cypress retry the assertion until it succeeds or times out.
cy.wrap($el).should('equal', 'someVal');
cy.wrap($el).should($item => {
expect($item).to.have.property("style");
//...
});
});
// Wait for post request. Takes advantage of automatic retries.
cy.wait('@updateServer');
// Wait for #secondSelect to be populated
cy.get("#firstSelect").children().should("have.length", 10);
cy.get("#secondSelect").children().each( ($el, idxFs) => {
// Perfom assertions on each list item in #secondSelect...
});
可能是我误解了您的问题。如果是这种情况,请编辑您的帖子,其中包含有关特定问题的更多信息和代码。