用selenium获取div元素的文本

时间:2014-01-07 16:38:02

标签: ruby selenium cucumber

我正在使用Cucumber,Ruby和Selenium。我有以下HTML:

<html>
<body>
  <div class="breadcrumbtrail" id="breadcrumbtrail">
    home
  </div>
</body>
</html>

以及以下步骤定义

  begin
    puts "got to bct step"
    bctValue = @driver.find_element(:class_name, "breadcrumbtrail").getText()
    puts "got bctValue value of #{bctValue}"
    assert(crumb == bctValue, "breadcrumbtrail #{bctValue}, not #{crumb}")
  end

我的输出显示正在运行该步骤;我曾尝试从div中获取“innerText”的属性,这似乎给了我div的名称。

我在find_element之后尝试过各种各样的东西 - 这个告诉我undefined method getText。我应该在ruby步骤定义中使用什么来获取该div中的文本?有没有人有关于此文档的建议?我发现的唯一一个关闭的是数百行,每种支持的语言很多,这使我很难找到我需要的东西。

3 个答案:

答案 0 :(得分:1)

事实证明,Selenium :: WebDriver:Element上的正确方法是“text()”,而不是getText()。现在我已将其更改为“文本”,它可以正常工作。

答案 1 :(得分:0)

你正在使用红宝石。 Ruby不使用camelCasing。

更改此行:

bctValue = @driver.find_element(:class_name, "breadcrumbtrail").getText()

bctValue = @driver.find_element(:class_name, "breadcrumbtrail").get_text

另外,如果您有id ...

,请不要使用:class_name
bctValue = @driver.find_element_by_id('breadcrumbtrail').get_text

答案 2 :(得分:0)

您可以使用下面的代码行来解决问题。

bctValue = @driver.find_element(:class_name, "breadcrumbtrail").text