セレンウェブドライバーを使用してウェブサイトをテストしていますが、別のプロパティの子であるプロパティの値を取得するのに問題があります。私にとって、この2番目/子レベルは常にnullとして戻ってきます。
上位レベルの属性/プロパティの値を取得しようとすると、次のコードで正常に機能します。
return Element1.GetAttribute("baseURI");
return Element2.GetAttribute("innerText");
上記のものは、私が期待しているテキスト/文字列を返します。ただし、次のように子プロパティの値を取得しようとすると、次のようになります。
return Element3.GetAttribute("style.cssText");
return Element4.GetAttribute("style.fontWeight")
私はnullになっています。上記の要素のDOM /プロパティを表示すると、それらが持つ値が表示されます。
cssText: "font-weight: bold;"
fontWeight: "bold"
開発者ツールバー内からプロパティを右クリックして[プロパティパスのコピー]を選択すると、次のようになります。
style.cssText
style.fontWeight
したがって、問題は、開発者ツールバーからコピーしているものが正しいと仮定して、子プロパティをどのように参照しているかにあると思います。ピリオド以外の区切り文字を試しましたが、今でも運がいいです。
-に格納されている値を返す構文を理解しようとしています。
object.style.fontWeight
私はもう試した:
parent.child.GetCSSValue("css"), parent-child.GetCSSValue("css")
parent.child.GetAttribute("attrib"), parent-child.GetAttribute("attrib")
parent.child.GetProperty("prop"), parent-child.GetProperty("prop")
これらはすべてnullまたはempty.stringとして返されます
あなたはかなり近かったようです。を取得するにはcssText
、fontWeight
を使用してgetComputedStyle()
からを使用getPropertyValue()
してスタイルを取得し、次のソリューションを使用できます。
IJavascriptExecutor jse = (IJavascriptExecutor)driver;
String cssText_script = "var x = getComputedStyle(arguments[0]);" +
"window.document.defaultView.getComputedStyle(x,null).getPropertyValue('cssText');"; ";
String fontWeight_script = "var x = getComputedStyle(arguments[0]);" +
"window.document.defaultView.getComputedStyle(x,null).getPropertyValue('fontWeight');"; ";
string myCssText = (string) jse.ExecuteScript(cssText_script, Element3);
string myFontWeight = (string) jse.ExecuteScript(fontWeight_script, Element4);
注:ElementIsVisibleメソッドとしてExpectedConditionsとともにWebDriverWaitを誘導する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加