2014-06-18 113 views
5

我想測試複選框選中或未選中的條件。無法找到::在硒webdriver的css選擇器元素之前

這是複選框的HTML代碼檢查

<div classs="input-control checkbox"> 
<span class="check"> 
::before 
</span> 
</div> 

::before是CSS選擇。

當我hoverover到複選框,它示出了作爲webelement span.check::before

driver.FindElement(By.CssSelector("span.check::before")); 

拋出未發現異常元件。

任何幫助將不勝感激。

+3

你說你有一個':: before'僞元素,但你的選擇說':: after' ...? (我不知道你甚至可以找到僞元素。) – BoltClock

+0

爲什麼你甚至需要定位一個僞元素? – Arran

+0

'div.checkbox :: after'不是*'span.check :: before'。每個元素可以有單獨的':: before'和':: after'僞元素。 –

回答

0

我不確定你的確切的html,因爲評論提到你的示例html中沒有::after。根據您的描述,這看起來與下面類似,但不確定這是否是您確切的情況。

我已經利用鼠標移動,然後等待顯示修改後的CSS /類的元素。鼠標移動並懸停到第一個元素,然後等待第二個出現在屏幕上。這與點擊操作類似,然後等待元素出現。

哈弗代碼示例 - 需要符合代碼語言和結構...

[Actions Instance goes here].MoveToElement([IWebElementGoesHere]).Perform(); 

你也可以只是做了該庫

[Actions Instance].Click([IWebElementGoesHere]).Perform(); 

參考:https://code.google.com/p/selenium/wiki/AdvancedUserInteractions

+0

謝謝大家。是的,這是我身邊的錯字錯誤。我在findElement語句中輸入了錯誤的webelement。它應該是driver.FindElement(By.CssSelector(「span.check :: before」)); – user3752861

+0

此外,我發現這個僞元素不被selenium css選擇器支持。在上面的例子中,chrome生成:: before僞元素,其中firefox根本不改變DOM。沒有僞元素被創建。 – user3752861

2

我有面臨與僞css選擇器(::之前一樣)類似的問題,我已經用java的「Actions」類來解決這個問題。

Actions action = new Actions(driver); 
action.moveToElement(driver.findElement(By.cssSelector("button[id$='save-button']"))).build().perform(); 

希望它有幫助。

感謝, 薩姆帕斯