簡體   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