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

これはどうですか?

new Select(browser.findElement(By.css("#Menu_ParentMenuID")))
    .selectByVisibleText("   undersida");
于 2014-11-27T14:19:40.027 に答える
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 に答える