Selenium:无法在 span 中打开下拉菜单

Selenium: Trouble opening drop down menu in span

我在访问 span 内的下拉菜单时遇到问题,甚至无法首先打开它(只能通过意外发生的功能。

我正在尝试点击此站点的下拉菜单:https://globaldata.pt/cart(您需要将商品放入购物车才能显示,它会更改数量)。

我已经尝试了很多不同的 select 或,目前不确定它是否是 select 或相关问题。我也已经尝试过 select,但没有用,因为它告诉我这是一个跨度。

这是我的代码的相关部分:

@FindBy(id = "quantity-selector")
private WebElement quantity_selector_cart;

public void setQuantity() {
    String initial_count = this.quantity_counter.getText();
      
            this.quantity_counter.click();



    //this.quantity_counter.isSelected();
    //driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

  /*  List<WebElement> quantity_values = driver.findElements(By.xpath("/html//select[@id='quantity-selector']"));
    for (WebElement qv : quantity_values) {
        if (qv.getText().equalsIgnoreCase("3"));
        {
            qv.click();
        }
    }*/


}

TestNG 告诉我测试通过,所以我假设点击以某种方式起作用?预期的行为是它应该保持打开状态,所以我可以 select 从下拉菜单中选择一些东西,但这并没有发生。奇怪的是,当我添加当前未注释的代码时(应该单击下拉菜单中值为 3 的元素的代码),它确实发生了。我真的不明白,希望你能帮助我理解我做错了什么。

编辑:这是我认为的 html 代码的相关部分,我知道它在相关部分说“select class”,但它确实被识别为跨越硒并抛出错误

<div class="d-flex flex-lg-column align-items-end justify-content-between content-right" data-qa="quantity-selector-T8BLACK">
<div class="cart-quantity-selector" data-qa="component cart-quantity-selector">
<form name="cartChangeQuantityForm_T8BLACK" method="post" action="/cart/change/T8BLACK">
<div class="quantity-selector" data-qa="component quantity-selector">
<label class="d-none" for="quantity-selector">Cantidad</label>
<select class="    select form-control custom-select js-select-quantity
" data-qa="component select quantity quantity-selector" name='quantity' id='quantity-selector' onchange='this.form.submit();'>
<option value="1">
1
</option>
<option value="2">
2
</option>
<option value="3">
3
</option>
<option value="4">
4
</option>
<option value="5">
5
</option>
<option value="6" selected>
6
</option>
<option value="7">
7
</option>
<option value="8">
8
</option>
<option value="9">
9
</option>
<option value="10">
 10
</option>
<option value="11">
11
</option>
<option value="12">
12
</option>
<option value="13">
13
</option>
<option value="14">
14
</option>
<option value="15">
15
</option>
<option value="16">
16
</option>
</select>
</div>
<input type="hidden" value="T8BLACK" name="groupKey">
<input id="" name="cart_change_quantity_form[_token]" class="form-control" type="hidden" placeholder="" value="E16srgpDolEhlaJOhbkLypJxdbUObW4C7yjnZznQZbQ" />
</form>
</div>

在HTML中,下拉菜单通常使用<select>标签或<input>标签实现。在 Selenium 中,为了对下拉菜单执行相同的操作,Selenium WebDrivers 提供了一个名为 Select class.

的 class Selenium WebDriver的

Selectclass提供了以下方法来select值:

  1. selectByIndex : 此方法select按索引号显示下拉选项。

  2. selectByValue : 此方法select按值设置下拉选项。

  3. selectByVisibleText : 此方法select基于下拉文本的下拉列表。

工作解决方案:

WebElement quantity_selector_cart = driver.findElement(By.id("quantity-selector"));
Select select = new Select(quantity_selector_cart);
select.selectByVisibleText("2");
//OR
select.selectByIndex(1);
//OR
select.selectByValue("2");