2014-02-28 53 views
0

我正在做客戶端java的練習使用cssSelector方法來檢索一些具有特定Web元素的CSS屬性的對象。 聲明通過選擇器獲得一個CSS的屬性與硒webdriver

driver.findElements(By.cssSelector(".item-result .content-main .block-opening")) 

使用類「.item-結果。內容 - 主要.block開」(請參閱​​下面我的塊),所有的罰款高達有回報,從頁面的所有元素!

儘管如此,我只想要那些具有屬性text-indent,值爲-999em的。爲了執行它,我先用

driver.findElements(By.cssSelector(".item-result .content-main .block-opening[text-indent]")) 

檢索具有文本縮進CSS屬性的所有元素,但我明白,雖然我有我的CSS塊中text-indent屬性沒有元素匹配。

HTML block 
<html id="ng-app" data-ng-app="rwd" data-ng-controller="AppCtrl" lang="fr" class="ng- 
scope"> 
<head>...</head> 
<body> 
... 
    <span class="block-opening icon-time-filled ng-scope" data-ng-if="bloc.openClosed == 
'O'">Ouvert</span> 
... 
</body> 
</html> 

CSS block 
.item-result .content-main .block-opening { 
width: 25px; 
color: #a1a1a1; 
text-indent: -999em; 
} 

我希望能找到正是我想要的,以通過使用

driver.findElements(By.cssSelector(".item-result .content-main .block-opening[text-indent='-999em']")) 

由於到TEXT-INDENT相關的元素都沒有找到,我阻止找到那些具有文本縮進-999em。

請任何幫助,將不勝感激!

+0

您不能使用選擇器按CSS樣式查找元素。你必須以其他方式確定他們的風格。 – BoltClock

+0

你知道一種方法嗎? – new

+0

對不起,我沒有 - 否則我會回答。 – BoltClock

回答

1

也許更長的路線有一點點找到元素,但你可以嘗試讓所有元素的列表,並檢查CSS的屬性,與適當的方法。

List<Webelement> elements = driver.findElements(By.cssSelector(".item-result .content-main .block-opening")); 
for (Webelement element : elements) { 
    if (element.getCssValue("text-indent").equals("-999em")) { 
     return element; 
    } 
} 

買者,我從來沒有試圖讓text-indent價值,因此我不能保證上述將工作。

http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebElement.html#getCssValue(java.lang.String)

0

您可以使用XPath使用內部文本值

By.xpath("//span[text()='Ouvert']") 
+0

我真的很想訪問其文本縮進屬性等於「999em」的元素,以根據我的測試策略排除它們。此外,頁面中的元素是擴展字符,並且只能在CSS中構建。那麼有沒有選擇讓他們? – new

相關問題