无法从Internet Explorer中动态Web表内的下拉列表中选择一个值

时间:2019-05-09 09:43:15

标签: java selenium-webdriver select listbox

我正在尝试单击位于动态Web表格内的网页中的下拉菜单。

我尝试使用driver.findelement,actions.movetoElement,javascript,Robot按键找到并选择一个选项,但是没有运气。

redis-cli -h RedisServerA
redis-cli -h RedisServerB

我的DOM如下所示

redis-cli -h server.example.com -p 23679
redis-cli -h server.example.com

日志中的错误消息如下:

public void selectFromDropDown(String value) throws Exception
{

List<WebElement> elem = driver.findElements(By.xpath("//tbody[@id='tbodyAlternateIds']//select"));
        for(int i=1;i<elem.size()-1;i++) {
            System.out.println("Element Size>>>>>>>>" + elem.size());
            WebElement Identifiers = driver.findElement(By.xpath("//select[@id='alternateIds["+i+"].type.description']"));
            Select select = new Select(Identifiers);
            if(select.getFirstSelectedOption().getText().isEmpty()) {
                if(!(select.getFirstSelectedOption().getAttribute("value").equalsIgnoreCase(value))){
                    JavascriptExecutor js = (JavascriptExecutor) driver;
                    js.executeScript("document.getElementById('alternateIds["+i+"].type.description').value = "+value+";");
                }
            }

        }

    }

select中的ID是动态的。我可以单击“新建”按钮,然后继续进行下拉框列表。因此,每个下拉框ID都按[1],[2]等进行分类和递增...(alternateIds [1] .type.description)

1 个答案:

答案 0 :(得分:0)

  1. 您需要在value周围加上引号,例如:

    js.executeScript("document.getElementById('alternateids[" + i + "].type.description').value='" + value + "'");
    
  2. 您为什么要进行此JavaScript调用?有Select.selectByValue()个功能可以做到
  3. 考虑将您的测试迁移为使用Page Object Model design pattern