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


91

我有个问题。我有这样的元素:

<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以名称结尾的元素。但是我不喜欢这个主意。我认为可以使用其他选择器来完成。


您能否添加一些<a>您想要选择的标签和不需要的标签的真实示例。帮助查看真实代码将更加容易。
andyb 2012年

由于机密政策,我无法添加实际示例:(
TarasLviv

但是我可以用其他方式解释它。id属性包含下一个:一些生成的字符+一些静态字符+:elementIndexInTable:+表中的列名
TarasLviv 2012年

而您想要的条件是什么?
塔肯

Answers:


143

试试这个:

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

这将为您a提供ID包含的所有元素

一些相同

并以ID结尾

名称


好吧,id *对我不起作用,它说无法评估为网络元素。我用它来找到ID为<constant><variable><constant>名称的iframe 。//driver.findElements(By.xpath("//iframe[contains(@id*,'FrameID')]")).size();其中FrameID是开始部分。无论如何,//a[contains(@id,'Some:Same') and contains(@id,'name')]为我做了把戏。因此,您可以+1。
2013年

2
您应该从此答案中删除XPath选择器,它没有添加任何内容,只是使水浑浊
Liam

1
@CosminO是否需要*下一个id
cokedude

@cokedude * =运算符意味着它必须至少包含该运算符之后的值。它可以与第二个条件结合使用,该条件必须使用运算符$ =以其他方式结束。有关详细说明,请参见w3schools.com/css/css_attribute_selectors.asp 简短答案。*不在id旁边,它在=旁边,并且它形成具有特殊含义的运算符
CosminO

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

运算符^ -匹配以给定值开头的元素

div[id^="element_123"] {

}

运算符$-匹配以给定值结尾的元素

div[id$="wrapper_text"] {

}

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

div[id*="wrapper_text"] {

}

8

我看到的唯一选择器是a[id$="name"](所有ID以“名称”结尾的ID链接),但它没有那么严格。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.