2

私は以下を持っていますHTML

<div id="filtersetedit_fieldNames" title="Please first select a list to filter!">
  <input value="5418630" name="NameID" type="checkbox"> John Das
  <input value="6360899" name="NameID" type="checkbox"> Ram Roy 
  <input value="9556609" name="NameID" type="checkbox"> Smith
  <input value="20156687" name="NameID" type="checkbox"> Paul
</div>

次に、selenium-webdriverを使用してそれぞれのチェックボックスをクリックする必要があります。しかし、私は値をとして抽出しようとしましたJohn Das,Ram roy etc。これは、チェックボックスをオンにするためにインデックス番号を取得するためだけですが、私のコードはまったく機能しませんでした。

CODE

driver.find_elements(:id,"filtersetedit_fieldNames").each do |x|
  puts x.text
  #puts index
  break if x.text == "LocationAttributes:Currency Type"
  index = index + 1
end

driver.find_elements(:name, "candidateFieldIds")[index].click

しかし、値は文字列として出力され"John Das Ram Roy Smith Paul"、適切なインデックスを見つける方法がわからないため、check boxヒットコードで使用できます。

私は実際に配列を作成しようとしています。["John Das","Ram Roy","Smith","Paul"]

4

2 に答える 2

1

あなたの本当の目標がテキストに基づいてチェックボックスを設定することであると仮定すると(つまり、実際には名前の配列は必要ありません)、xpathセレクターを使用して、目的のテキストの直後に続くチェックボックス要素を見つけることができます。

#The text of the checkbox you want to select
text_of_target_checkbox = 'Ram Roy'

#The div containing the checkboxes
checkbox_div = driver.find_element(:id => 'filtersetedit_fieldNames')

#Get the checkbox that has the specified text immediately after it
e = checkbox_div.find_element(:xpath => "./input            
    [following-sibling::text()
        [
            position() = 1 and 
            normalize-space(.)='#{text_of_target_checkbox}'
        ]
    ]")

#Click the checkbox
e.click
于 2013-02-06T17:04:21.910 に答える
0

多分:

driver.find_elements(
  :xpath,
  "//div[contains(@id,'filtersetedit_fieldNames')]/input"
) do |x|

する必要があります:

driver.find_elements(
  :xpath,
  "//div[contains(@id,'filtersetedit_fieldNames')]/input"
).each do |x|
于 2013-02-06T03:18:24.770 に答える