首页 > 解决方案 > 似乎无法使用 cypress 在下拉列表中选择一个选项

问题描述

我正在尝试使用柏树从以下站点的“选择您的尺寸”下拉列表中选择“小”:

https://www.giant-bicycles.com/us/tcr-advanced-2-pro-compact-2021

而对于我的生活,我似乎无法得到它。我使用了几种方法并继续使用柏树撞墙。

这就是我到目前为止所拥有的:

/// <reference types="cypress"/>

describe('Giant Website', () => {

    beforeEach('Navigate to Giant website', () =>{
        cy.NavigateToGiantWebsite()
    })

    it('check stock', () => {
       cy.contains('button', 'I Understand').click()
       cy.get('[id="682"]').contains('a', 'TCR Advanced').click()
       cy.get('[alt="TCR Advanced 2 Pro Compact Unicorn White"]').click()
       cy.get('[title="Select your size"]').click({force: true})
       //cy.contains('li', 'Small ').click() this select x-small instead of small
       cy.get('[ng-show="lockedCart.length == 0"]').contains('[for="sizes"]').click() 
        
    });
})

请帮忙

标签: javascriptautomationcypress

解决方案


cy.contains('li', 'Small ')选择 x-small 尺寸的原因是

  • cy.contains(selector, content)其中 content 是一个字符串将查找包含指定字符串的任何选项,因此将同时匹配x-smallsmall

  • 它只返回一个元素,第一个是x-small.

您可以使用简单的正则表达式代替字符串,并使用插入符号^将其限制为在开始时匹配。

所以,这行得通

cy.contains('li', /^Small/).click()

参考:.contains() - 正则表达式

请注意,如果您使用 li 的计数(例如.eq(5)),则如果网站更改选项,您的测试将需要更新。


推荐阅读