-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. 我们可以让这两个循环结合起来运行它们parallel吗?前提是两者loop count相同。
  2. 我想创建hashwherekey will be textitem 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

您还可以通过提取hrefand textwith以函数式编程风格进行操作map

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

这样做(可以说)在美学上更令人愉悦,但效率稍低,因为它需要两倍的迭代次数,并创建几个额外的数组,但除非您有大量链接,否则这不会成为问题。

于 2013-01-23T22:28:39.820 回答