我正在寻找下表的CSS选择器:
Peter | male | 34
Susanne | female | 12
是否有任何选择器来匹配所有包含“男性”的td ?
我正在寻找下表的CSS选择器:
Peter | male | 34
Susanne | female | 12
是否有任何选择器来匹配所有包含“男性”的td ?
当前回答
对于那些希望进行Selenium CSS文本选择的人来说,这个脚本可能会有一些用处。
诀窍是选择你正在寻找的元素的父元素,然后搜索含有文本的子元素:
public static IWebElement FindByText(this IWebDriver driver, string text)
{
var list = driver.FindElement(By.CssSelector("#RiskAddressList"));
var element = ((IJavaScriptExecutor)driver).ExecuteScript(string.Format(" var x = $(arguments[0]).find(\":contains('{0}')\"); return x;", text), list);
return ((System.Collections.ObjectModel.ReadOnlyCollection<IWebElement>)element)[0];
}
如果有多个元素,它将返回第一个元素因为在我的例子中,它总是一个元素。
其他回答
如果你使用的是Chimp / Webdriver。io,他们支持比CSS规范更多的CSS选择器。
例如,这将点击第一个包含“坏熊”字样的锚:
browser.click("a*=Bad Bear");
恐怕这是不可能的,因为内容没有属性,也不能通过伪类访问。CSS3选择器的完整列表可以在CSS3规范中找到。
看起来他们是在考虑CSS3规范,但它没有被削减。
:contains() CSS3选择器http://www.w3.org/TR/css3-selectors/#content-selectors
如果我没看错说明书的话,没有。
您可以在元素上匹配元素中属性的名称和元素中命名属性的值。但是,我没有看到任何用于匹配元素中的内容的东西。
如果你想对你想要的内容应用样式。简单的技巧。 Td{边框:1px纯黑色;} Td:空{背景:石灰;} Td:empty::after{内容:"male";} <表> < tr > 彼得< td > < / td > < td > < !——男——> < / td > < td > 34道明> < / < / tr > < tr > < td > Susanne td > < / 女性< td > < / td > < td > 14道明> < / < / tr > 表> < /
https://jsfiddle.net/hyda8kqz/