我有一个HTML格式的
<tbody>
<tr>
<td> Test1 </td>
<td> .. </td>
<tr/>
<tr> ... </tr>
</tbody>
<tbody>
<tr>
<td> Test2 </td>
<td> .. </td>
<tr/>
<tr> .. </tr>
</tbody>
<tbody>
<tr>
<td> Test3 </td>
<td> .. </td>
<tr/>
<tr> .. </tr>
</tbody>
我需要一个字符串列表Test1,Test2,Test3。我尝试在Ruby中执行以下操作
elements = driver.find_elements(:xpath, "//tbody/tr[1]/td[1]")
for x in elements
puts x.findElement
这似乎没有打印出Test1,Test2,Test3。由于我不熟悉ruby,我在Java中尝试了以下内容,它似乎有效。
List<String> inOneStatement = driver.findElements(By.xpath("//tbody/tr[1]/td[1]"))
.stream().map(WebElement::getText)
.collect(Collectors.toList());
我怎么能在Ruby中做到这一点?
答案 0 :(得分:1)
您应该在Ruby
中尝试以下内容: -
elements = driver.find_elements(:xpath, "//tbody/tr[1]/td[1]").map(&:text)
# => [" Test1 ", " Test2 ", " Test3 "]
已修改: - 实施wait
,直到所有elements
出现,如下所示: -
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
elements = wait.until { driver.find_elements(:xpath, "//tbody/tr[1]/td[1]") }
elements.each do |el|
puts el.text
end
希望它会对你有所帮助.. :)