反復

2016-07-05 13 views
1

私はこの反復

<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> 

の形式でHTMLを持っている私は、文字列のTest1、Test2を、Test3はのリストを持っている必要があります。私はこれは私がルビーに慣れていない午前のTest1、Test2を、Test3.Sinceをプリントアウトしていないようだルビー

elements = driver.find_elements(:xpath, "//tbody/tr[1]/td[1]") 
for x in elements 
    puts x.findElement 

で次の操作を実行しようとした、私はJavaで次のことを試してみました、動作しているようです。

List<String> inOneStatement = driver.findElements(By.xpath("//tbody/tr[1]/td[1]")) 
.stream().map(WebElement::getText) 
.collect(Collectors.toList()); 

Rubyでどうすればいいですか?

答えて

1

あなたはRubyで以下のように試してみてください: - 編集

elements = driver.find_elements(:xpath, "//tbody/tr[1]/td[1]").map(&:text) 
# => [" Test1 ", " Test2 ", " Test3 "] 

: - 以下のようにすべてのelements現在までwaitを実装: -

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 

が、それはあなたを助けることを願っています..: )

+0

これは機能していないようです。返されるものは空であるようです –

+0

@JonnyPeppersは 'xPath'が正しいことを確かめます' $ x( "// tbody/tr [1]/td [1]") 'これをブラウザコンソールに貼り付け、その要素で配列を返す場合は、ページ上のすべての要素が見つかるまでwaitを実装してください。 –