1

我有一个下拉菜单,它是这个结构: 在此处输入图像描述

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

试试这个:

var text = "   undersida";

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

给了我一个 NoSuchElementException。

为什么?

这是我尝试过的值列表text

"   undersida"
"   undersida"
"undersida"
4

4 回答 4

1

我不知道这是否仍然是一个问题,但我想做出贡献。

我认为问题在于“不间断空间”的性质(或您的理解)。
它不是像 " " 或字符串 "  "中的常规空格,
您真正想要的是它的 c# unicode 表示

所以要测试的字符串应该是这样的:

"\u00A0\u00A0\u00A0undersida"

看看这里:http ://www.fileformat.info/info/unicode/char/a0/index.htm

于 2015-03-11T15:28:17.250 回答
0

尝试使用以下代码:-

var option = new SelectElement(browser.FindElement(By.CssSelector("#Menu_ParentMenuID"))).SelectBySubText("undersida");
于 2015-01-12T17:39:56.297 回答
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 包含所需选项的选项。然后,它获取该选项的“值”属性。之后,它使用与该文本相关的值从下拉列表中选择相关项目。

于 2014-11-27T14:34:39.283 回答
0

那这个呢?

new Select(browser.findElement(By.css("#Menu_ParentMenuID")))
    .selectByVisibleText("&nbsp;&nbsp;&nbsp;undersida");
于 2014-11-27T14:19:40.027 回答