查找以下代码:
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
parallel
吗?
只要loop count
都相同。hash
和key will be text
。item will be
href
醇>
答案 0 :(得分:1)
map = {}
all_attachment_names.zip(all_links) do |a, l|
map[a] = l
end
答案 1 :(得分:1)
您可以使用zip
执行此操作:
returned_hash = {}
all_links.zip(all_attachment_names) do |link, name|
returned_hash[name.text] = link.attribute("href").strip
end
您也可以通过href
提取text
和map
,以功能性编程风格完成此任务:
hrefs = all_links.map{|link| link.attribute("href").strip}
names = all_attachment_names.map{|name| name.text}
returned_hash = Hash[names.zip(hrefs)]
这样做(可以说)更美观但效率更低,因为它需要两倍的迭代次数,并创建了一些额外的数组,但除非你有大量的链接不会成为问题。< / p>