有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Selenium(Java),当下拉列表元素具有有限的可识别属性时,如何从下拉列表中选择值?

我试图使用Selenium从下拉列表中选择一个值,我尝试了所有可能的方法(据我所知),但都没有成功。 请帮我在这里找到合适的方法

以下是HTML代码,供参考:

<select name="list" onchange="this.disabled=true;if(this.options[selectedIndex].value == '')this.disabled=false;else optionselect(this);" onfocus="hint('')">

这些就是我尝试过的方法

方法1:

new Select(driver.findElement(By.xpath("xpath"))).selectByVisibleText("Text*");
new Select(driver.findElement(By.name("list"))).selectByVisibleText("Text");

方法2:(我尝试使用所有可能的方法通过名称、abs-xpath、rel-xpath、cssSelector等来识别下拉元素,但没有任何方法可以识别该元素)

Select sel = new Select(element);
sel.selectByValue("Value");
Thread.sleep(5000);

方法3:

Select sel = new Select(element);
sel.selectByIndex(11);
Thread.sleep(5000);

方法4:

Select select = new Select(driver.findElement(By.name("list")));
select.selectByVisibleText("Text");

我猜上述所有方法的问题都在于识别下拉元素。但我真的不确定这里出了什么问题


共 (2) 个答案

  1. # 1 楼答案

    试试下面的

    WebElement dd= driver.findElement(By.xpath("//select[@name='list']"));
    Select s=new Select(dd);
    s.selectByIndex(1);
    
  2. # 2 楼答案

    也许你会有一些运气使用行动

    (使用Firefox或Chrome,即做悬停动作时表现怪异)

    Actions actions = new Actions(driver);
    WebElement hoverElement = driver.findElement(By.name("list"));
    
    Select sel = new Select(element);
    // hover over the element
    actions.
    moveToElement(hoverElement).
    perform();
    
    // now maybe all of your approaches would work
    // sel.selectByIndex(11);
    // sel.selectByValue("Value");
    // sel.selectByVisibleText("Text");
    
    // or just find and click your desired element:
    WebElement targetElement = driver.findElement(targetElementLocator);
    
        actions.
        moveToElement(targetElement).
        click().
        perform();