-1

以下のコードを見つけます。

all_links = driver.find_elements(:xpath,"//fieldset[contains(@class,'attachmentTable')]/table/tbody/tr/td/a")
all_attachment_names = driver.find_elements(:xpath,"//fieldset[contains(@class,'attachmentTable')]/legend")

all_links.each do|link|

href = link.attribute("href").strip
puts href
end

all_attachment_names.each do |name|

text = name.attribute("text")
puts text

end
  1. これら2つのループを組み合わせて実行する手段を作ることはできますparallelか? の両方loop countが同じであるという条件で。
  2. hashwherekey will be textとを作成したいitem will be href
4

2 に答える 2

1
map = {}
all_attachment_names.zip(all_links) do |a, l|
    map[a] = l
end
于 2013-01-23T22:21:45.323 に答える
1

これを行うために使用できますzip

returned_hash = {}
all_links.zip(all_attachment_names) do |link, name|
  returned_hash[name.text] = link.attribute("href").strip
end

hreftextを抽出することにより、関数型プログラミング スタイルで実行することもできますmap

hrefs = all_links.map{|link| link.attribute("href").strip}
names = all_attachment_names.map{|name| name.text}
returned_hash = Hash[names.zip(hrefs)]

そうすることは (ほぼ間違いなく) 審美的にはより魅力的ですが、反復回数が 2 倍になり、いくつかの余分な配列が作成されるため、多少効率が低下します。

于 2013-01-23T22:28:39.820 に答える