Selenium WebDriver:无法使用webdriver从下拉列表中选择元素

时间:2013-10-08 10:45:21

标签: java javascript selenium-webdriver

我的应用程序中有两个下拉列表,第二个下拉列表在选择第一个下拉列表后变为启用。我面临的问题是我的代码能够从第一个下拉列表中选择值,但它没有从第二个下拉列表中选择值。我收到的错误是:

线程“main”中的异常org.openqa.selenium.InvalidElementStateException:元素不能隐藏,禁用或只读(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:138毫秒

在选择第一个下拉列表后我也尝试过等待,但仍然出现此错误。

我的Java代码:

第一次下拉代码:

  WebElement combo= d1.findElement(By.name("ctl00$ContentPlaceHolder1$ddlAgency"));
  System.out.println("proerty name for agent:" +combo);
  combo.sendKeys("huma");
  //d1.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
   Thread.sleep(200);

第二次下拉代码:

   WebElement combo1=d1.findElement(By.name("ctl00$ContentPlaceHolder1$ddlCountry"));
   System.out.println("proerty name for country:" +combo1);
   combo1.clear();
   combo1.click();
   combo1.sendKeys("Test");

第二个下拉列表的HTML:

  <select id="ctl00_ContentPlaceHolder1_ddlCountry" style="width:450px;"       onchange="fillval();" name="ctl00$ContentPlaceHolder1$ddlCountry">

错误: 线程“main”中的异常org.openqa.selenium.InvalidElementStateException:元素不能被隐藏,禁用或只读(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:138毫秒

2 个答案:

答案 0 :(得分:0)

尝试使用Select类进行第二次下拉列表。

WebElement combo1 = driver.findElement(By.name(ctl00$ContentPlaceHolder1$ddlCountry));
    Select secondDrpDwn = new Select(combo1);
    secondDrpDwn.selectByValue("Test");

答案 1 :(得分:0)

最后我解决了我的问题。分享它,以便它也将帮助其他人。 以下代码对我有用。

              WebElement dropDownListBox =d1.findElement(By.cssSelector("option[value=\"Please Select Country\"]"));
              dropDownListBox.click();

             WebElement    combo1=d1.findElement(By.name("ctl00$ContentPlaceHolder1$ddlCountry"));
             System.out.println("proerty name for country:" +combo1);
             combo1.click();
             Select secondDrpDwn = new Select(combo1);
             secondDrpDwn.selectByVisibleText("Test");