。可见的?当元素不可见时不给出 false

.visible? doesn't give false when element not visible

有我要检查的测试用例:

  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"

测试 1 有效,但测试 2 出现超时错误。我想我在这里问过类似的问题 wait_until block is giving time out error 但这次我认为它与 wait_until 块无关,因为 wait_until 适用于 "test1"。

您的 wait_until 块预计解析为真。如果没有,它将引发 TimeoutError。第一个测试通过,因为 link_element(:title => 'load_more').visible? 为真并且满足 wait_until 方法。如果你想让方法 return true 和 false,你需要捕获错误并显式 return false。类似于:

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