我正在使用Selenium Webdriver在基于javascript的Web应用程序上自动执行功能测试。 javascript代码(knockout.js)将SELECT下拉列表的OPTION元素之一设置为不同的颜色#FFFFCC,即rgba(255,255,2014,1)(浅黄色)(由firebug验证)。 / p>
我的硒使用代码如下:
Select select = new Select(driver.findElement(By.id("views"))); // get the select
List<WebElement> allOptions = select.getOptions(); // get all the options
for (WebElement option : allOptions) { //iterate over the options
if (option.getCssValue("background-color").compareToIgnoreCase("rgba(255, 255, 204, 1)") == 0) {
// do something
}
}
但if语句总是失败。当我对一个option.getCssValue("background-color")
的值执行system.out.println()时,它为我的所有选项元素返回'transparent',为我修改的选项元素返回'rgba(51,153,255,1)',转换为十六进制时为#3399FF(蓝色)。
为什么selenium报告此元素的十六进制值不正确?
答案 0 :(得分:2)
我对这个问题发生的原因有一个很好的理论,而且看起来很可重复。
蓝色是鼠标突出显示时元素背景的颜色。 Selenium似乎拿起那种颜色而不是下拉选项的实际背景颜色。
也许我应该向开发者报告这是一个错误或无意识的功能。