【问题标题】:.visible? doesn't give false when element not visible。可见的?当元素不可见时不给出 false
【发布时间】:2015-05-14 21:22:57
【问题描述】:

有我想检查的测试用例:

  1. 加载更多按钮可见
  2. 加载更多不可见

我写了这个方法:

 def loadmore_button_visible?
    wait_until(20) do
      @browser.refresh
      link_element(:title => 'load_more').visible?
    end
  end

并将其用作

expect(on(ProductViewPage).loadmore_button_visible?).to be_true 用于“test1” expect(on(ProductViewPage).loadmore_button_visible?).to be_false 代表“test2”

它适用于 test1,但对于 test2,它会给出超时错误。我想我在这里问过类似的问题wait_until block is giving time out error 但这次我认为这与wait_until 块无关,因为wait_until 适用于“test1”。

【问题讨论】:

    标签: ruby cucumber watir


    【解决方案1】:

    您的wait_until 块预计解析为真。如果没有,它将引发 TimeoutError。第一个测试通过了,因为link_element(:title => 'load_more').visible? 为真并且满足wait_until 方法。如果希望方法返回真假,则需要捕获错误并显式返回假。比如:

    def loadmore_button_visible?
      begin
        wait_until(20) do
          @browser.refresh
          link_element(:title => 'load_more').visible?
        end
      rescue TimeoutError 
        false
      end
    end
    

    【讨论】:

    • 你是对的,但问题是为什么它给timeout它应该给false,因为任何事情都可能导致timeout。网速慢也可能导致timeout 在这种情况下错误地给出false
    • 您使用的方法调用Wait.until,它应该返回true 或引发错误。文档对此很清楚。 rubydoc.info/gems/watir-webdriver/Watir/Wait#until-class_method
    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2016-03-17
    • 2018-05-18
    相关资源
    最近更新 更多