2014-02-28 57 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

相关问题