使用元素时为什么测试通过?方法来检查元素的存在?

法鲁克

您如何确定页面上是否存在元素?

该页面有一个链接:

<a class="twitter" href="h.....">twitter</a>

我的页面对象类是:

class Computer
  include PageObject

  link(:twitter_link, :class => "twitterrrrr")

  def element_exists?
    puts @browser.url
    twitter_link?        
  end       
end

该页面正在黄瓜步骤定义中使用:

Then /the elements should exist/ do
  on(Computer).element_exists?
end

上面的:class故意是错误的,它实际上应该等于“ twitter”(就像上面的HTML一样),但是当我调用twitter_link?该步骤时,该步骤仍然可以通过并且不会失败。

当我打电话.exists?twitter_link测试失败,这是正确的:

def element_exists?
  puts @browser.url
  twitter_link.exists?
end  

当我这样做时,也发生了预期的结果:

def element_exists?
  puts @browser.url
  twitter_link?.should == true
end 

有人知道我twitter_link?自己打电话时为什么会过去吗?根据page-objects gem文档,应该有一种开箱即用地检查是否存在的方法。这是指在页面类中检查是否存在,而不是在实际页面本身上进行检查吗?这就是它正在做的事情。

贾斯汀·柯(Justin Ko)

问题在于,twitter_link?仅返回true或false。诸如RSpec和Cucumber之类的测试框架不会因为某些错误返回而失败。它们仅在断言失败或发生异常时失败。

换句话说,twitter_link?您不仅需要调用该方法,还需要在一个断言中对其进行检查。例如:

# Examples using should syntax
page.twitter_link?.should == true
page.twitter_link_element.should exist

# Examples using expect syntax
expect(page.twitter_link?).to be_true
expect(page.twitter_link_element).to exist

如果要检查一系列元素,则可以创建元素名称的数组,然后遍历它们。

elements = [:twitter_link]
elements.each { |x| self.send( "#{x.to_s}?").should == true }

请注意,在创建元素数组时,您不想使用elements = [twitter_link]通过twitter_link进入数组,它将调用该方法以实际尝试单击链接。这就是为什么您需要使用诸如字符串或符号之类的东西来代替的原因。存储页面对象元素也是一种选择:

elements = [twitter_link_element]
elements.each { |x| x.exists?.should == true }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS:是否存在一种标准方法来检查用户是否与给定元素之外的其他UI元素进行交互?

来自分类Dev

是否有内置(或至少简单)的方法来检查是否存在可通过$ FPATH访问的功能?

来自分类Dev

是否存在矢量化方法来检查1D数组的第i个元素是否存在于3D数组的第i个元素上?

来自分类Dev

为什么在使用jQuery隐藏元素时元素再次显示

来自分类Dev

有没有更容易的方法来通过“聚合物元素”中的ID获取元素?

来自分类Dev

有没有更容易的方法来通过“聚合物元素”中的ID获取元素?

来自分类Dev

当数组中存在元素时,为什么index = -1?

来自分类Dev

当文本中存在元素时,为什么indexof返回-1

来自分类Dev

反应测试库检查元素是否存在

来自分类Dev

有什么更好的方法来检索另一个元素?

来自分类Dev

为什么我不能使用方法setState()来数组元素

来自分类Dev

jQuery:通过检查绑定元素是否存在来提高性能?

来自分类Dev

为什么在后钩中添加“ sleep 1”会导致此Rspec / Capybara测试通过?

来自分类Dev

为什么我应该失败的Supertest测试通过了?

来自分类Dev

为什么完成事件会阻止此测试通过?

来自分类Dev

通过CSS使用元素检查量角器中是否存在元素

来自分类Dev

为什么Javax“XPath评估()方法不会在选择器使用Text()节点测试时返回具有不断空间的元素

来自分类Dev

使用JQuery时,有没有更好的方法来检查过期的SESSIONS?

来自分类Dev

一种快速的方法来检查两组是否至少包含一个相同的元素

来自分类Dev

有没有更好的方法来检查列表中的所有元素是否都已命名?

来自分类Dev

当张量中存在未知元素时,正确的方法是什么?

来自分类Dev

什么是最快的方法来检查奇数并除以2的幂

来自分类Dev

当该元素位于脚本标签下方时,为什么javascript无法通过id获得元素?

来自分类Dev

为什么我们不能使用push方法来迭代javascript数组?

来自分类Dev

空手道UI:在waitFor()中使用变量来检查UI测试中的元素

来自分类Dev

使用Jest测试Vue组件时,为什么document.activeElement没有指向JSm中的焦点元素?

来自分类Dev

如果没有registerReceiver()方法来注册他,为什么用于检查电池状态的BroadcastReceiver无法工作?

来自分类Dev

量角器:存在错误,但测试通过了

来自分类Dev

检查数组元素是否存在的安全方法?

Related 相关文章

  1. 1

    iOS:是否存在一种标准方法来检查用户是否与给定元素之外的其他UI元素进行交互?

  2. 2

    是否有内置(或至少简单)的方法来检查是否存在可通过$ FPATH访问的功能?

  3. 3

    是否存在矢量化方法来检查1D数组的第i个元素是否存在于3D数组的第i个元素上?

  4. 4

    为什么在使用jQuery隐藏元素时元素再次显示

  5. 5

    有没有更容易的方法来通过“聚合物元素”中的ID获取元素?

  6. 6

    有没有更容易的方法来通过“聚合物元素”中的ID获取元素?

  7. 7

    当数组中存在元素时,为什么index = -1?

  8. 8

    当文本中存在元素时,为什么indexof返回-1

  9. 9

    反应测试库检查元素是否存在

  10. 10

    有什么更好的方法来检索另一个元素?

  11. 11

    为什么我不能使用方法setState()来数组元素

  12. 12

    jQuery:通过检查绑定元素是否存在来提高性能?

  13. 13

    为什么在后钩中添加“ sleep 1”会导致此Rspec / Capybara测试通过?

  14. 14

    为什么我应该失败的Supertest测试通过了?

  15. 15

    为什么完成事件会阻止此测试通过?

  16. 16

    通过CSS使用元素检查量角器中是否存在元素

  17. 17

    为什么Javax“XPath评估()方法不会在选择器使用Text()节点测试时返回具有不断空间的元素

  18. 18

    使用JQuery时,有没有更好的方法来检查过期的SESSIONS?

  19. 19

    一种快速的方法来检查两组是否至少包含一个相同的元素

  20. 20

    有没有更好的方法来检查列表中的所有元素是否都已命名?

  21. 21

    当张量中存在未知元素时,正确的方法是什么?

  22. 22

    什么是最快的方法来检查奇数并除以2的幂

  23. 23

    当该元素位于脚本标签下方时,为什么javascript无法通过id获得元素?

  24. 24

    为什么我们不能使用push方法来迭代javascript数组?

  25. 25

    空手道UI:在waitFor()中使用变量来检查UI测试中的元素

  26. 26

    使用Jest测试Vue组件时,为什么document.activeElement没有指向JSm中的焦点元素?

  27. 27

    如果没有registerReceiver()方法来注册他,为什么用于检查电池状态的BroadcastReceiver无法工作?

  28. 28

    量角器:存在错误,但测试通过了

  29. 29

    检查数组元素是否存在的安全方法?

热门标签

归档