以下是页面的dom结构:
我试过了
button:contains("srave")
我也试过
button[innerText="srave"]
button[text="srave"]`
button[innerHtml="srave"]`
它们都不起作用。
在未定义元素属性时需要获取元素。 PS:textContent()返回srave作为结果。
编辑:
我在页面上有很多这样的按钮元素。我知道我可以遍历所有这些并检查文本。但是我希望直接根据它包含的文本获取web元素以减少执行时间
答案 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;
}