2016-12-05 56 views
0

硒我已經找到了我的元素檢查WebElement在一個具體內容:僞類後

IWebElement icon = box.FindElement(By.ClassName("box-icon")); 

這個元素(圖標),有時也有內容以這種方式設置:

&:after { 
     content: $icon-special; 
    } 

我想檢查content屬性目前是否設置爲$icon-special。我知道我必須使用JSDriver執行JavaScript腳本並將我的IWebElement icon傳遞給它,但我不知道如何從JavaScript/jQuery中讀取after.content:

我想出了:

var script = @"return window.getComputedStyle(arguments[0], ':after').getPropertyValue('content');"; 
      var result = JSDriver.Execute(script, icon); 

但結果卻是一些奇怪的字符如心,點等;

我無法修改DOM,因爲我正在測試。

+1

您可以發佈您的實際HTML的片段? – Cosmin

+0

您不能操作僞元素的內容,因爲它不是DOM的一部分。你可以通過「toggleClass」或「hasClass,addClass,removeClass」方法實現這一點... – maverick

回答

1

return語句中缺少腳本表達式:

string script = @"return window.getComputedStyle(arguments[0], ':after').getPropertyValue('content');"; 
string result = (string)JSDriver.Execute(script, icon); 
+0

是啊,已經發現了,抱歉後期更新,但我得到的不是一個正常的文本,但奇怪的字符。我希望得到:$ icon-special;而不是「\」\「」 – Yoda

+1

看起來您正在獲取爲實體'$ icon-special;'定義的字符代碼(unicode編碼),因爲它沒有被引用。你可以簡單地將結果與代碼斷言:'result ==「\ uXXXX」' –

+0

現在看來你的解釋更合理:)。我可以以某種方式預測編碼將用於某個實體嗎?如果其他樣式改變,它可以改變嗎?特別是最後一個問題非常重要。 – Yoda