通过选择器获取selenium webdriver的css属性

时间:2014-02-28 14:25:46

标签: selenium selenium-webdriver css-selectors

我正在使用客户端java进行练习,以使用cssSelector方法检索具有特定Web元素的CSS属性的某些对象。 声明

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

使用类“.item-result .content-main .block-opening”从页面返回所有元素(请参阅下面的我的块),所有内容都很好!

尽管如此,我只希望那些具有属性text-indent的值为-999em。要执行它,我首先使用

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

检索具有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相关的元素,因此我被阻止查找具有-99em文本缩进的元素。

请提供任何帮助!

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

您可以使用内部文本值

使用xpath找到该元素
By.xpath("//span[text()='Ouvert']")