Selenium webdriver(经过测试的ChromeDriver)无法通过包含变音符号的文本查找选项吗?

时间:2014-11-27 13:48:05

标签: c# selenium selenium-webdriver chrome-web-driver

我有一个下拉列表,这个结构是这样的: enter image description here

现在,我想使用Selenium Webdriver按文本选择最后一个选项(我不能依赖选项实际上是最后一个选项)。

试试这个:

var text = "   undersida";

var option = new SelectElement(browser.FindElement(By
  .CssSelector("#Menu_ParentMenuID"))).SelectByText(text);

给了我一个NoSuchElementException。

为什么?

以下是我为text尝试过的值列表:

"   undersida"
"   undersida"
"undersida"

4 个答案:

答案 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");