我有一个下拉列表,这个结构是这样的:
现在,我想使用Selenium Webdriver按文本选择最后一个选项(我不能依赖选项实际上是最后一个选项)。
试试这个:
var text = " undersida";
var option = new SelectElement(browser.FindElement(By
.CssSelector("#Menu_ParentMenuID"))).SelectByText(text);
给了我一个NoSuchElementException。
为什么?
以下是我为text
尝试过的值列表:
" undersida" " undersida" "undersida"
答案 0 :(得分:1)
我不知道这仍然是一个问题,但我想做出贡献。
我认为问题在于"不间断空间的性质(或理解)"。
它不是像#34; "或字符串"
"
你真正想要的是它的c#unicode表示
所以要测试的字符串应该是这样的:
"\u00A0\u00A0\u00A0undersida"
看看这里:http://www.fileformat.info/info/unicode/char/a0/index.htm
答案 1 :(得分:0)
这个怎么样?
new Select(browser.findElement(By.css("#Menu_ParentMenuID")))
.selectByVisibleText(" undersida");
答案 2 :(得分:0)
如果您不受仅通过可见文本选择的约束,还有另一种方法可以选择相关元素。
以下是Java代码:
String str = "undersida";
Select sel = new Select(browser.findElement(By.id("Menu_ParentMenuID")));
List<WebElement> list_options = sel.getOptions();
for(WebElement ele: list_options){
if(ele.getText().contains(str)){
String value = ele.getAttribute("value");
sel.selectByValue(value);
break;
}
}
这将从选择下拉列表中获取所有选项。然后搜索innerHTML / text包含所需内容的选项。然后,它获得&#34;值&#34;该选项的属性。之后,它使用与该文本相关的值从下拉列表中选择相关项目。
答案 3 :(得分:0)
尝试使用以下代码: -
var option = new SelectElement(browser.FindElement(By.CssSelector("#Menu_ParentMenuID"))).SelectBySubText("undersida");