JavaScript ベースの Web アプリケーションの機能テストを自動化するために、Selenium Webdriver を使用しています。JavaScript コード (knockout.js) は、SELECT ドロップダウン リストの OPTION 要素の 1 つを別の色 #FFFFCC に設定します。これは、rgba(255, 255, 204, 1) (明るい黄色) (firebug で検証済み) です。
セレンで使用する私のコードは次のとおりです。
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 ステートメントは常に失敗します。system.out.println() を値に対して実行するとoption.getCssValue("background-color")
、すべてのオプション要素に対して「透明」が返され、変更されたオプション要素に対して「rgba(51, 153, 255, 1)」が返されます。16 進数に変換すると、 #3399FF (青色)。
セレンがこの要素の間違った 16 進値を報告するのはなぜですか?