我的应用程序中有两个下拉列表,第二个下拉列表在选择第一个下拉列表后变为启用。我面临的问题是我的代码能够从第一个下拉列表中选择值,但它没有从第二个下拉列表中选择值。我收到的错误是:
线程“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毫秒
答案 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");