使用赛普拉斯自动化一些测试,我发现了这个问题。
我们正在向客户询问许多问题,根据先前的答案,这些问题将一一出现。在显示下一个问题(例如答案的种类)之前,它是未知的。我以这里的示例为例,其中每个“ div”(不是“ rootDiv”)都是一个问题,只有在上一个响应后才会显示它们。
<div class="rootDiv">
<div class="type1">
<div class="type1b">
<button class="button1">
<button class="button1">
</div>
</div>
<div class="type2">
<div class="type2b">
<button class="button2">
<button class="button2">
<button class="button2">
<button class="button2">
</div>
</div>
<div class="type1">
<div class="type1b">
<button class="button1">
<button class="button1">
</div>
</div>
.
.
.
<div class="typeX">
<div class="typeXb">
<button class="buttonX">
<button class="buttonX">
<button class="buttonX">
<button class="buttonX">
</div>
</div>
</div>
所以我面临的问题是:
有很多解决方案,主要问题取决于如何获取这些元素
答案 0 :(得分:1)
- 有没有办法访问“ rootDiv”中的最后一个“ div”,检查其类并基于它单击任何按钮?
可以访问'rootDiv'中的最后一个'div':cy.get('.rootDiv div').last()
。但是,检查类然后根据类的值执行操作是一个坏主意,因为它是conditional testing,而赛普拉斯并不是真正为此而生。但是,如果您真的需要这种态度(没有其他更好的方法),我认为这是可行的。
- 有没有办法将“文本”写在最后一个“ div”的按钮上?
是的,可以获取最后一个div的“文本”。 cy.get('.rootDiv div').last().invoke('text').then((textOnTheButton) => {console.log(textOnTheButton})
3。是否有一种方法来获取元素列表(在这种情况下为按钮)并对其进行遍历?
要获取所有按钮,您需要的是cy.get(button)
。如果要使用索引遍历所有索引,则可以使用for循环和eq(),但是对于所有情况,它可能不是最佳/最有效的解决方案。