用于根据文本获取Web元素的Css选择器

时间:2017-06-20 11:31:03

标签: css selenium selenium-webdriver css-selectors

以下是页面的dom结构:

enter image description here

我试过了

button:contains("srave")

我也试过

button[innerText="srave"]
button[text="srave"]`    
button[innerHtml="srave"]`

它们都不起作用。

在未定义元素属性时需要获取元素。 PS:textContent()返回srave作为结果。

编辑:

我在页面上有很多这样的按钮元素。我知道我可以遍历所有这些并检查文本。但是我希望直接根据它包含的文本获取web元素以减少执行时间

4 个答案:

答案 0 :(得分:0)

您可以使用jquery获取相同内容,因为css未选择文字。

工作小提琴

<强> fiddle link

试试这个

alert($('button').find('span').html());

您可以使用以下css通过“srave”获取button名称。

<强> HTML

<button data-name="srave">
  <span>Brave</span>
</button>

<强> CSS

button[data-name="srave"] {
  background:tomato;
}

答案 1 :(得分:0)

您是否尝试过:按钮[class =&#39; k-button k-button-icontext&#39;]或按钮[dir =&#39; ltr&#39;]我不认为cssSelectors你在你的例子中尝试是正确的,因为你复数按钮。如果这些都不起作用,则可能是页面上有多个具有相同选择器的按钮。在这种情况下,使用xpath可能更好,或者您可以获得具有相同选择器的所有元素的列表,然后从您创建的列表中获取任何一个并单击它。

答案 2 :(得分:0)

不,你不能使用CSS Selector。您可以使用XPath。

//button[text()='srave']

或者

//button[contains(text(),'srave')]

答案 3 :(得分:0)

要添加到danidangerbear,这里有一个java方法可以执行您想要的操作:

public String getElementText(String elementText){
List<WebElement> elements = driver.findElements(By.cssSelector("button"));
    String elementText = null;
    for(WebElement element : elements)
        if(element.getText().equals(actualValue)){
            elementText = element.getText();
            break;
        } else {
            elementText = "element text does not exist";
            continue;
        }
    return elementText;
}