【问题标题】:Get ID of a radio button with Selenium CSS selector使用 Selenium CSS 选择器获取单选按钮的 ID
【发布时间】:2011-08-04 14:55:28
【问题描述】:

我只是想知道我怎样才能得到的ID

<input type="radio" class="class1" id="radio1" />

借助 Selenium 中的 CSS 选择器。

【问题讨论】:

  • 用什么语言? Selenium 支持多种语言

标签: c# selenium css-selectors


【解决方案1】:

这是一个比您想象的更困难和更有趣的问题。请务必注意 HTML class 属性的值不是唯一的。因此,很有可能(实际上很可能)您的 HTML 页面可能有多个元素的类设置为“class1”。因此,仅当您的单选按钮是网页上具有该类值的 first 元素时,严格选择该类才有效。仅使用您的示例,更安全的定位器表达式将是

selenium.GetAttribute("css=input.class1[type='radio']@id");

这仅匹配作为单选按钮的 class1 元素。它更加具体——它正确地避免了恰好也具有 class 属性的 class1 值的先前元素。但它仍然不能令人满意——它再次将匹配 first 这样的元素。例如,如果您有一组以上的单选按钮,则可以进一步改进。假设您想要此代码片段中 second 组中的第一个单选按钮...

<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 配方的更多信息,请参阅我在 Simple-Talk.com 上的文章和挂图XPath, CSS, DOM and Selenium: The Rosetta Stone。)

【讨论】:

    【解决方案2】:

    我给你举个例子:

    selenium.GetAttribute("css=.class1@id");
    

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

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 1970-01-01
      • 2015-07-01
      • 2020-09-27
      • 2012-04-11
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      相关资源
      最近更新 更多