2016-07-06 14 views
2

Ich versuche, die folgende Java-Selen-Code Ruby Selen CodeJava Stream entspricht in Ruby?

List<String> items = myDriver.findElements(By.xpath("//tbody/tr[1]/td[1]")) //This returns an array 
      .stream().map(WebElement::getText) //Calls stream map 
      .collect(Collectors.toList()); 

ich auf dem Teil stecke zu konvertieren, wo es das Array konvertiert zu streamen und bildet sie mit WebElement getText und verwandelt sich in eine Liste

Diese

ist, was ich

items = driver.find_elements(:xpath, "//tbody/tr[1]/td[1]").map(&:text) 

ich kann nicht scheinen, den Rubin Äquivalent des Stroms zu finden versucht haben und .collect? Was könnte ich hier machen?

+0

Welchen HTML-Parser möchten Sie verwenden? 'map' und' collect' sind in Ruby verfügbar. – tadman

+0

Ich bin nicht ganz, was Sie mit HTML-Parser meinen? Der oben angegebene Java-Code funktioniert, aber der Ruby-Code speichert nichts im Elementarray. Wie kann ich auch sammeln? @tadman –

Antwort

-2

Das Äquivalent zu einem Java Stream ist ein Enumerator. Es gibt kein Äquivalent zu collect in Ruby. Java's collect is a generalization of folding, hat Ruby zwei faltende Operationen: inject und each_with_object, die beide spezielle Fälle von Javas collect sind. Das Äquivalent zum Aufruf von stream() zum Erstellen einer Stream ist, each ohne einen Block zu rufen, um eine Enumerator zu erstellen.

Wenn Sie jedoch die volle Allgemeinheit von collect in Ruby haben möchten, müssen Sie es selbst implementieren.