CSS选择器(id包含部分文本)

124

我有一个问题,我有一些如下所示的元素:

<a> 元素的 id = someGenerated Some:Same:0:name

<a> 元素的 id = someGenerated Some:Same:0:surname

<a> 元素的 id = someGenerated Some:Same:1:name

<a> 元素的 id = someGenerated Some:Same:1:surname

我需要使用 CSS 选择器来获取名称。问题是我不知道该如何获取它。我尝试了 a[id*='Some:Same'] - 它返回所有的 <a> 元素。之后我可以获取 id 以 name 结尾的元素,但我不喜欢这个想法。我认为可以使用其他选择器来解决。


请问您能否提供一些您想要选择和不想要选择的<a>标签的真实示例代码呢?这样我们就可以更容易地帮助您了解代码。 - andyb
我无法提供真实的例子,因为涉及保密政策 :( - TarasLviv
但我可以用其他方式来解释。如果id属性包含下列内容:一些生成的字符 + 一些静态字符 + :elementIndexInTable: + 表中的列名 - TarasLviv
那么你想要的标准是什么? - Tarken
3个回答

183

尝试这个:

a[id*='Some:Same'][id$='name']

这将获取所有包含 a 元素,并且它们的 id 以

Some:Same

结尾,并且其 id 包含

name


嗯,id* 对我没用,它说无法将其评估为 Web 元素。我使用它来查找具有 <constant><variable><constant> 名称的 id 的 iframe。//driver.findElements(By.xpath("//iframe[contains(@id*,'FrameID')]")).size(); 其中 FrameID 是开头部分。无论如何,//a[contains(@id,'Some:Same') and contains(@id,'name')] 对我很有帮助。所以给你加一分,老兄。 - anujin
2
你应该从这个答案中删除XPath选择器,它没有添加任何内容,只会让事情变得更加混乱。 - Liam
1
@CosminO 你需要在 id 旁边加上 * 吗? - cokedude
@cokedude *= 运算符表示它必须至少包含运算符后面的值。它与第二个条件一起使用,即使用 $= 运算符必须以其他内容结尾。 详细解释请参见 https://www.w3schools.com/css/css_attribute_selectors.asp简短回答:* 不是紧挨着 id 的,而是紧挨着 =,并且它形成了具有特殊含义的运算符。 - CosminO

60
<div id='element_123_wrapper_text'>My sample DIV</div>

操作符^ - 匹配以给定值开头的元素

div[id^="element_123"] {

}

操作符 $ - 匹配以给定值结尾的元素

div[id$="wrapper_text"] {

}

操作符 * - 匹配具有包含给定值的属性的元素

div[id*="123_wrapper"] {

}

7

我看到的唯一选择器是a[id$="name"](所有id以"name"结尾的链接),但它并不如应该的那样严格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接