2014-06-18 3 views
5

Я хочу проверить флажок установленный или непроверенный.Не удалось найти :: before css селекторный элемент в selenium webdriver

Это 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' is * not *' span.check :: before'. Каждый элемент может иметь отдельные псевдоэлементы ':: before' и' :: after'. –

ответ

0

Я не уверен в вашем точном html, так как в комментарии упоминается, что в вашем примере html нет ::after. Основываясь на вашем описании, это похоже на приведенное ниже, но не уверен, что именно это и есть ваша точная ситуация.

Я использовал перемещение мыши, а затем дождался элемента, который отображает измененный класс css /. Мышь перемещалась и наводилась на первый элемент, а затем ждала появления второго на экране. Это работает аналогично для щелчка, а затем ждет появления элемента.

Hover пример кода - должен соответствовать свой язык и структуру кода ...

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

вы также можете просто сделать

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

Ссылка для этой библиотеки: https://code.google.com/p/selenium/wiki/AdvancedUserInteractions

+0

Спасибо всем. да, это была ошибка опечатки с моей стороны. Я поставил неверный webelement в statementElement. он должен был быть driver.FindElement (By.CssSelector ("span.check :: before")); – user3752861

+0

Кроме того, я узнал, что псевдоэлемент не поддерживается селектором селена css. В приведенном выше случае хром генерирует элемент :: before pseudo, где firefox вообще не изменяет DOM. не был создан псевдоэлемент. – user3752861

2

У меня есть столкнулся с аналогичной проблемой с селекторами псевдоселекса (как раньше, так и раньше), я преодолел проблему, используя класс «Действия» selenium java.

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

Надеюсь, это поможет.

Спасибо, Сампатх

Смежные вопросы