2014-06-18 10 views
5

Chcę przetestować pod kątem zaznaczonego lub niezaznaczonego warunku checkbox.Nie można znaleźć :: przed selektorem css w selenowym webdriverze

Jest to kod html do wyboru sprawdzone

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

::before jest selektor CSS.

kiedy hoverover do pola wyboru pokazuje webelement jak span.check::before

ale

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

rzutów element nie stwierdzono wyjątku.

Każda pomoc będzie bardzo ceniona.

+3

Mówisz masz ':: before' pseudo-element, ale Twój selektor mówi' :: after' ...? (Nie jestem pewien, czy uda ci się znaleźć pseudoelementy). – BoltClock

+0

Dlaczego potrzebujesz celować w pseudoelement? – Arran

+0

'div.checkbox :: after' to * not *' span.check :: before'. Każdy element może mieć oddzielne pseudoelementy ':: before' i' :: after'. –

Odpowiedz

0

Nie jestem pewien twojego dokładnego html jako komentarz wspomina, że ​​nie ma ::after w twoim przykładzie html. Na podstawie Twojego opisu wydaje się to podobne do poniższego, ale nie masz pewności, czy taka jest Twoja dokładna sytuacja.

Wykorzystałem ruch myszy, a następnie czekam na element, który wyświetla zmodyfikowaną css/klasę. Mysz przesunie się i zatrzyma na pierwszym elemencie, a następnie poczeka na pojawienie się sekundy na ekranie. Działa to podobnie do kliknięcia, a następnie czekać na pojawienie się elementu.

Hover przykład kodu - musi dopasować swój język i strukturę kodu ...

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

można też po prostu zrobić

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

odniesienia dla tej biblioteki: https://code.google.com/p/selenium/wiki/AdvancedUserInteractions

+0

Dzięki wszystkim. tak, to był błąd literowy z mojej strony.i wstawił nieprawidłowy webelement w instrukcji findElement. miał to być driver.FindElement (By.CssSelector ("span.check :: before")); – user3752861

+0

Ponadto dowiedziałem się, że pseudoelement nie jest obsługiwany przez selenowy selektor css. W powyższym przykładzie chrome generuje pseudo element :: before, w którym jako firefox wcale nie zmienia się DOM. nie utworzono pseudo elementu. – user3752861

2

mam napotkałem podobny problem z selektorami pseudo css (:: before alike), przezwyciężyłem problem używając klasy "Actions" selenium java.

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

Mam nadzieję, że to pomaga.

Dzięki Sampath

Powiązane problemy