我试图通过仅匹配可见文本的一部分从下拉列表中选择一个选项,因为整个文本并不总是相同的。谁能帮我解决这个问题?
问问题
10563 次
5 回答
3
我还没有对此进行测试,但这是你在 C# 中的做法,你应该能够很容易地将它转换成 Java 代码。我能想到的两种方法:
1)
string selBoxID = "id of select box";
string partialText = "option text to match";
driver.FindElement(By.XPath("//select[@id='" + selBoxID + "']/option[contains(text(), '" + partialText + "')]")).Click();
或者
2)
SelectElement elSel = new SelectElement(driver.FindElement(By.Id("id of select box")));
IList<IWebElement> opts = elSel.Options;
foreach (IWebElement elOpt in opts)
{
if(elOpt.Text.Contains("partial text to look for"){
elOpt.Click();
return true;
}
}
return false;
于 2013-05-09T07:54:17.360 回答
1
C# 与 LINQ
var menuOptions = new SelectElement(Driver.FindElement({LocatorForMenu})).Options;
var requiredOption = menuOptions.FirstOrDefault(element => element.Text.Contains(partialTextToMatch));
if (requiredOption == null)
throw new Exception("Wasn't able to select menu item: " + partialTextToMatch);
requiredOption.Click();
于 2016-01-25T16:42:40.297 回答
0
也许这会起作用?
new Select(driver.findElement(By.id("MyIdOrOtherSelector"))).selectByVisibleText("Something");
虽然我不确定这是否会允许部分文本。还有
selectByValue(value)
selectByIndex(index)
如果它们有任何用处
于 2013-05-13T11:33:58.093 回答
0
这是一个java代码
WebElement dropdown = driverObj.findElement(By.id(id));
dropdown.click();
List<WebElement> options = dropdown.findElements(By.tagName("option"));
for(WebElement option : options){
String optTxt = option.getText();
if(optTxt.contains(partialText)){
option.click();
break;
}
}
}
于 2014-12-02T16:25:51.863 回答
-1
您可以使用以下命令。让我知道它是否有效。
driver.findElement(By.id("id of the dropdown")).sendkeys("part of visible text");
driver.findElement(By.id("id of the dropdown")).sendKeys(Keys.ENTER);
于 2013-05-09T06:38:33.793 回答