2014-04-22 175 views
4

我想檢查html頁面中元素的顏色。 該元素的顏色被設定爲一個JavaScript,看圖像enter image description here如何用Selenium獲取元素顏色

與DIV-ID「Ab_banco_M1T1_switch」元素可以根據val的」的值假設4個值,當然只有它們中的一個顯示「變量。 val變量是以某種方式從服務器設置的,它看起來腳本每隔X秒輪詢一次服務器並更新val的值。

我試圖讓該元素的顏色如下:

WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("Ab_banco_M1T1_switch"))); 

element.getAttribute("background") 
element.getAttribute("style") 
element.getAttribute("background-color") 
element.getCssValue("style") 
element.getCssValue("color") 

沒有成功,他們回到「空」或頁面backgorund色。

,使色彩的唯一方法就是使用XPath /html/body/div/div[2]/div[2]/div[2]/div/div/div/div[3]/div (for red, if I want the green /html/body/div/div[2]/div[2]/div[2]/div/div/div/div[2]/div)

但它不是我想要的。的確,Xpath定位了元素,但它並不告訴我顯示的顏色是紅色還是另一種顏色,我只能通過查看網頁才能知道它。

換句話說,我想訪問當前顯示的顏色爲Firebug所做的,看右側的面板,可以看到element.style ->background-Color = red

當我調用元素,getCssCValue("background-color")我得到backgorund顏色#body_right_div

預先感謝您。

+0

你的代碼看起來你正在使用java –

回答

0

使用XPath,您可以嘗試按屬性進行搜索。例如//div[@style='background: red']。如果你想獲得的顏色則CSS我會用方法getCSSValue()

4

您可以得到由元素顏色(元素的背景顏色):

element.getCssValue("background-color"); 

你可以得到元素文本/標題顏色:

element.getCssValue("color"); 

例如,如果你想要得到的背景和文本顏色「登錄」按鈕,LinkedIn,代碼如下:

driver.get("https://www.linkedin.com/"); 
     String buttonColor = driver.findElement(By.name("submit")).getCssValue("background-color"); 
     String buttonTextColor = driver.findElement(By.name("submit")).getCssValue("color"); 
     System.out.println("Button color: " + buttonColor); 
     System.out.println("Text color " + buttonTextColor); 
+0

上面的代碼將返回rgb值。如果你想轉換爲十六進制,你可以去http://stackoverflow.com/questions/19668893/getcssvalue-color-in-hex-format-in-selenium-webdriver –

3

試試這個,對我的工作完美:

import org.openqa.selenium.support.Color; 

String color = driver.findElement(By.xpath("xpath_value")).getCssValue("color"); 
System.out.println(color); 
String hex = Color.fromString(color).asHex(); 
System.out.println(hex); 

所以,你可以使用getCssValue("color");getCssValue("background-color");得到的顏色。 但是,這將在RGB,所以你需要轉換爲十六進制。使用十六進制代碼,您可以比較該值並將其打印出來,以便您可以在每個getCssValue之後看到您獲得的結果。

+0

我認爲你幫助提問者多一點,如果你解釋你的一段代碼。 – Markus

+0

回覆bro:所以你可以得到getCssValue(「color」); getCssValue( 「背景顏色」);但是,這將在RGB,所以你需要轉換爲十六進制。使用十六進制代碼,您可以比較該值並將其打印出來,以便您可以在每個getCssValue後看到您正在獲取的內容 –

相關問題