![](/img/trans.png)
[英]Select radio button with dynamic Id, using CSS selector or Xpath
[英]Get ID of a radio button with Selenium CSS selector
我只想知道我怎样才能获得ID
<input type="radio" class="class1" id="radio1" />
在Selenium的CSS选择器的帮助下。
这是一个比你想象的更困难和有趣的问题。 请务必注意,HTML class
属性的值不是唯一的 。 因此,很可能(实际上可能)您的HTML页面可能有多个元素,类设置为“class1”。 因此,只有当您的单选按钮是具有该类值的网页上的第一个元素时,才能严格选择该类。 仅使用您的示例,将有一个更安全的定位器表达式
selenium.GetAttribute("css=input.class1[type='radio']@id");
这仅匹配作为单选按钮的class1元素。 它更加具体 - 它正确地避免了碰巧也具有class属性的class1值的先前元素。 但它仍然不能令人满意 - 再次它将匹配第一个这样的元素。 例如,如果您有多组单选按钮,则可以进一步改进。 假设您想从此代码片段中获取第二组中的第一个单选按钮...
<div id='group1'>
<input type="radio" class="class1" id="radio1" />
...
</div>
<div id='group2'>
<input type="radio" class="class1" id="radio1" />
...
</div>
...你可以使用这样的定位器:
selenium.GetAttribute("css=#group2 .class1[type='radio']@id");
(注意'#group2'之后的空格很重要!)
但是,上述主要是解释问题而不是提供一个好的答案,因为根本问题仍然存在。
很可能你的代码真的是这样的,多个单选按钮都具有相同的类型和相同的类,只能通过位置区分:
<input type="radio" class="class1" id="radio1" />
<input type="radio" class="class1" id="radio2" />
<input type="radio" class="class1" id="radio3" />
除了第一个之外,唯一的方法是通过显式索引来定位其中一个, 但这需要您先验地知道索引 ,例如:
selenium.GetAttribute("css=#group2 [type='radio']:nth-child(2)@id");
(有关为Selenium构建CSS配方的更多信息,请参阅我的文章和挂图XPath,CSS,DOM和Selenium: Simple-Talk.com上的Rosetta Stone 。)
我会举个例子:
selenium.GetAttribute("css=.class1@id");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.