Java 为伪代码断言css颜色

Java 为伪代码断言css颜色,java,css,eclipse,selenium,Java,Css,Eclipse,Selenium,对于一个网站,我必须坚持使用颜色。元素很容易找到,但我似乎不知道如何断言颜色,因为css使用psuedo代码生成显示的颜色。我使用以下方法获取元素并检索颜色: assertEquals("rgba(236, 117, 4 , 1)", driver.findElement(By.xpath("//*[@class='ab-toggle']")).getCssValue("color")); 页面上的代码为: <div class="ab-toggle">::before</d

对于一个网站,我必须坚持使用颜色。元素很容易找到,但我似乎不知道如何断言颜色,因为css使用psuedo代码生成显示的颜色。我使用以下方法获取元素并检索颜色:

assertEquals("rgba(236, 117, 4 , 1)", driver.findElement(By.xpath("//*[@class='ab-toggle']")).getCssValue("color"));
页面上的代码为:

<div class="ab-toggle">::before</div> //in chrome
<div class="ab-toggle"></div> //in firebug
如果我运行代码,它将返回comparisonFailure:

org.junit.ComparisonFailure: expected:<[rgba(236, 117, 4 , 1)]> but was:<[rgba(34, 34, 34, 1)]>
我还尝试使用css选择器(而不是xpath)访问元素,使用以下命令:

assertEquals("rgba(236, 117, 4 , 1)", driver.findElement(By.cssSelector("div.ab-toggle ::before")).getCssValue("color"));
它会导致无接触异常。当我尝试时:

assertEquals("rgba(236, 117, 4 , 1)", driver.findElement(By.cssSelector("div.ab-toggle")).getCssValue("color"));

它只返回旧的结果,就像我使用xpath定位元素时一样

似乎您使用选择器定位
。ab-toggle
,但希望获得伪元素
ab-toggle::after
。我在编辑中看到您编写的
“div.ab-toggle::before”
此处的选择器中必须没有空格。像这样尝试:
“div.ab-toggle::before”
。如果没有空格,它仍然会导致一个NoSuchElementException:assertEquals(“rgba(236117,4,1)”,driver.findelelement(By.cssSelector(“div.ab-toggle::before”)。getCssValue(“color”);如果正确,selenium似乎无法选择pesudo元素:>>当前css选择器定位器支持所有css1、css2和css3选择器,但css3中的命名空间、一些伪类(:n个类型、:n个最后一个类型、:第一个类型、:最后一个类型、:仅类型、:已访问、:悬停、:活动、:焦点、:不确定)和伪元素除外(::first-line,::first-letter,::selection,::before,::after)。谢谢你,尼科,看来我那时无法选择伪元素。这项检查必须保持手动状态。你能将其添加为答案,这样我才能接受吗?
assertEquals("rgba(236, 117, 4 , 1)", driver.findElement(By.cssSelector("div.ab-toggle ::before")).getCssValue("color"));
assertEquals("rgba(236, 117, 4 , 1)", driver.findElement(By.cssSelector("div.ab-toggle")).getCssValue("color"));