我正在使用selenium,testng和带ecplipse的java来执行自动测试。我在命令上取得了成功,例如点击按钮(selenium.click("按钮")),将值传递给文本框(selenium.type(" component",& #34;值")和点击,但当它带有组件类型下拉列表(与common或asp.net mvc相关)时,我无法使用命令seleniu选择字段.select(" field&# 34;,"价值")。
要选择值甚至是字段,我使用xpath,但即便如此,下拉列表也不能,或者可以部分使用。
当下拉列表接受我输入的值时,我可以使用selenium.click,但如果没有,我到目前为止没有尝试过任何内容。
答案 0 :(得分:2)
使用webdriver你可以用Select类做我已经发布了一个代码,请在下面工作 看看,Select Class有api可以通过索引和值来选择下拉值,看看Select api了解更多信息
public static void dropdown()
{
WebDriver driver = new FirefoxDriver();
driver.get("http://demosthenes.info/blog/166/HTML-Forms-Drop-down-Menus");
Select sele = new Select(driver.findElement(By.id("state")));
sele.selectByIndex(1);
}
答案 1 :(得分:2)
有几种方法可以从下拉列表中选择元素。以下是其中的一些内容,您可以将其保留为常用的下拉操作,并调用所需的任何方法。
Microsoft.Office.Interop.Word
您可以调用上述方法,例如
//select the dropdown using "select by visible text"
public static void dropDownSelectByText(WebElement webElement, String VisibleText){
Select selObj=new Select(webElement);
selObj.selectByVisibleText(VisibleText);
}
//select the dropdown using "select by index"
public static void dropDownSelectByIndex(WebElement webElement, int IndexValue){
Select selObj=new Select(webElement);
selObj.selectByIndex(IndexValue);
}
//select the dropdown using "select by value"
public static void dropDownSelectByValue(WebElement webElement, String Value){
Select selObj=new Select(webElement);
selObj.selectByValue(Value);
}
仅当鼠标移至特定位置时才会显示下拉列表,那么您还必须使用“动作”
CommonPageOperations.dropDownSelectByValue(selectSubClientFromDropDownXpath,strSubClientName);
答案 2 :(得分:0)
WebElement select = driver.findElement(By.id("selection"));
List<WebElement> options = select.findElements(By.tagName("option"));
for (WebElement option : options) {
if("Germany".equals(option.getText()))
option.click();
}
答案 3 :(得分:0)
Actions actions = new Actions(driver);
WebElement dBox1= (new WebDriverWait(driver,10)).until(ExpectedConditions.elementToBeClickable(By.id("selection""))). selectByVisibleText("");
actions.moveToElement(dBox1);
actions.click();
actions.perform();
答案 4 :(得分:0)
您必须使用Selenium中的Select来从下拉值中进行选择。
//按ID
WebDriver driver = new FirefoxDriver();
new Select (driver.findElement(By.id("usState"))).selectByVisibleText("FL");
//来自XPath
new Select (driver.findElement(By.xpath("xPath for dropdown"))).selectByVisibleText("FL");