2014-06-18 82 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(); 

希望它有帮助。

感谢, 萨姆帕斯