我正在尝试将以下 Java selenium 代码转换为 Ruby selenium 代码
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());
我停留在将数组转换为流并使用 WebElement getText 将其映射并转换为列表的部分
这是我试过的
items = driver.find_elements(:xpath, "//tbody/tr[1]/td[1]").map(&:text)
我似乎找不到流和 .collect 的 ruby 等价物?我可以在这里做什么?
最佳答案
Java Stream
的等价物是 Enumerator
.没有等同于 collect
在 ruby 中。 Java's collect
is a generalization of folding , Ruby有两个折叠操作:inject
和 each_with_object
,两者都是 Java 的 collect
的特例。相当于调用 stream()
来创建一个 Stream
是调用 each
而不用 block 来创建一个 Enumerator
.
但是,如果您想要在 Ruby 中使用 collect
的完整通用性,则必须自己实现它。
关于ruby 中的 Java 流等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38233794/