我正在尝试在只读下拉列表中选择一个值,我尝试了很多选项,但仍然无法选择所需的选项。下拉列表有两个值ValueOne和ValueTwo。默认选择ValueOne,在我的情况下,我需要选择ValueTwo。当我点击下拉列表并使用firebug进行Inspect Element时,我使用firebug获取以下代码 守则是:
<td class="rcbInputCell rcbInputCellLeft" style="width:100%;">
<input id="ctl00_ContentPlaceHolder1_RadGrid1_ctl00_ctl02_ctl02_EditFormControl_rcbControllerType1_Input" class="rcbInput radPreventDecorate" type="text" readonly="readonly" value="ValueOne" name="ctl00$ContentPlaceHolder1$RadGrid1$ctl00$ctl02$ctl02$EditFormControl$rcbControllerType1" autocomplete="off">
</td>
到目前为止,我已经尝试了
1 ----------
Select DropDown = new Select(driver.findElement(By.id("ctl00_ContentPlaceHolder1_RadGrid1_ctl00_ctl02_ctl02_EditFormControl_rcbControllerType1_Input")));
DropDown.selectByVisibleText("ValueTwo");
我得到一个例外
:org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "input"
2 ------------
WebElement Dropdown = driver.findElement(By.id("ctl00_ContentPlaceHolder1_RadGrid1_ctl00_ctl02_ctl02_EditFormControl_rcbControllerType1_Input"));
Select clickThis = new Select (Dropdown);
clickThis.selectByVisibleText("ValueTwo");
获取例外:
org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "input"
我也尝试过selectByIndex,但仍然收到上述异常消息。
3 --------------
driver.findElement(By.id("ctl00_ContentPlaceHolder1_RadGrid1_ctl00_ctl02_ctl02_EditFormControl_rcbControllerType1_Input")).sendKeys("ValueTwo");
没有任何反应,案件被标记为通行证。没有错误也不例外。
此外,我在 firefox 38.0.5 上使用 selenium 2.46.0和eclipse TestNG 运行 webscript 。 我确认框架不是iframe。
请建议解决方案。
答案 0 :(得分:0)
根本问题可能是,这不是标准的选择框,而是基于javascript的解决方案。上面的代码只显示了主持人&#39; HTML元素。我很确定会有a)以前隐藏的元素变得可见或b)DOM中新创建的元素保存值。你必须找到那些(开发工具或萤火虫)进行交互。 一些可能出现的伪代码(只是为了得到一个提示):
<ul>
<li id="element1">ValueOne</li>
<li id="element2">ValueTwo</li>
</ul>
在它出现后(等待硒)你只需要点击所需的元素。
答案 1 :(得分:0)
在firefox中通过firepath插件找到你的xpath。
driver.findElement(By.xpath(&#34; .//*@ ID =&#39; ctl00_ContentPlaceHolder1_RadGrid1_ctl00_ctl02_ctl02_EditFormControl_rcbControllerType1_Input&#39;]&#34))点击();
在下拉列表中选择值 - &gt;通过右键单击并复制xpath
来转到firpathdriver.findElement(By.xpath(".//*@id='ctl00_ContentPlaceHolder1_RadGrid1_ctl00_ctl02_ctl02_EditFormControl_rcbControllerType1_Input']/span[3]")).click();
希望您能找到解决方案: - )
答案 2 :(得分:0)
您可以使用:-
driver.findElement(By.id("ctl00_ContentPlaceHolder1_RadGrid1_ctl00_ctl02_ctl02_EditFormControl_rcbControllerType1_Input")).sendKeys("ValueTwo", Keys.ARROW_DOWN, Keys.ENTER)
答案 3 :(得分:0)
您可以使用以下代码。在这里,我要做的就是找到下拉菜单,单击它,然后找到选择并发送键的选项,直到我们看到要选择的元素,然后单击它。
public class InputDropdownselect {
@Test
public void login() throws Exception
{
System.setProperty("webdriver.chrome.driver", "G:\\drivers\\chrome\\chromedriver_win32\\chromedriver.exe");
WebDriver driver= new ChromeDriver();
driver.get("https://yourwebsite.com");
driver.manage().window().maximize();
driver.findElement(By.id("txtuser")).sendKeys("123456");
driver.findElement(By.id("txtpassword")).sendKeys("Abc!@1");
driver.findElement(By.id("log-btn")).click();
Thread.sleep(2000);
driver.findElement(By.id("enrollment")).click();
//driver.findElement(By.xpath("//*[@id=\"enrollment\"]")).click();
driver.findElement(By.xpath("//*[@id=\"studentBasicForm\"]/div[2]/div[9]/div/div/input")).click();
Actions action= new Actions(driver);
WebElement joiningYear=driver.findElement(By.xpath("//input[@placeholder=\"Joining Year Group\"]/following::ul[1]/descendant::li/following::span[contains(text(),\"8\")]"));
do {
action.sendKeys(Keys.ARROW_DOWN).perform();
} while (!joiningYear.isDisplayed());
joiningYear.click();
}
}