繁体   English   中英

使用Selenium CSS选择器获取单选按钮的ID

[英]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");

以下是文档的链接http://release.seleniumhq.org/selenium-remote-control/0.9.2/doc/dotnet/Selenium.DefaultSelenium.GetAttribute.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM