0

ByClassName() で見つかった要素のリストを反復処理しています。そのリストの項目ごとに、子要素のテキスト値を抽出する必要があります。JavaScript を使用して値を取得するためのいくつかの解決策を見てきましたが、何かが欠けているに違いありません。この特定の例では、スパンがあり、そこからのテキストまたは innerhtml が必要です。テキストが含まれていることを Firebug で確認しました。

4

2 に答える 2

1

GetAttribute("innerHTML") は非表示の html によって禁止されていないことがわかりました。

 public string GetChildElementTextByClassName(IWebElement element, string className)
    {
        string returnValue = string.Empty;

        try
        {
            IWebElement childElement = element.FindElement((By.ClassName(className)));
            if (childElement != null)
            {
                returnValue = childElement.GetAttribute("innerHTML").Replace(Environment.NewLine, "").Trim();
            }
        }
        catch (Exception)
        {

            //throw;
        }

        return returnValue;
    }
于 2013-02-13T16:18:58.387 に答える
1

//div[@class='Class']/child::div子要素にアクセスすることだけが必要な場合は、クラス名と子の型を変更できるxpath を使用することもできます。親要素のすべての子にアクセスしたい場合は、以下のようにセレクターに一致する要素のリストを返すことができます:

ReadOnlyCollection<IWebElement> elements = _driver.FindElements(By.XPath("//div[@class='ClassName']/child::div"));

この時点で、はい、要素にアクセスできる場合は、innerHTML にアクセスできるはずです。私は自分のコードを C# で書いていることに注意してください。これは、あなたのコードも同じだと思います。

于 2013-02-13T21:22:14.310 に答える