3

我正在使用 Selenium Webdriver 对基于 javascript 的 Web 应用程序进行自动功能测试。javascript 代码 (knockout.js) 将 SELECT 下拉列表的 OPTION 元素之一设置为不同的颜色#FFFFCC,即 rgba(255, 255, 204, 1)(浅黄色)(由 firebug 验证)。

我供 selenium 使用的代码如下:

    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() 时,我的所有选项元素返回“透明”,修改后的选项元素返回“rgba(51,153,255,1)”,当转换为十六进制时#3399FF(蓝色)。

为什么 selenium 报告此元素的十六进制值不正确?

4

1 回答 1

2

关于为什么会发生这个问题,我有一个很好的理论,而且它似乎可以重现。

蓝色是鼠标突出显示时元素背景的颜色。Selenium 似乎选择了该颜色,而不是下拉选项的实际背景颜色。

也许我应该将其作为错误或意外功能报告给开发人员。

于 2013-07-19T09:23:12.800 回答