代码之家  ›  专栏  ›  技术社区  ›  Arkon

水豚中CSS元素的等待函数

  •  2
  • Arkon  · 技术社区  · 7 年前

    有没有办法使用 find (或其衍生物之一)以查找异步显示的CSS元素? 不幸的是,功能 page.has_css?

    1 回复  |  直到 7 年前
        1
  •  7
  •   Thomas Walpole    7 年前

    你声称 page.has_css? 是非等待函数不正确。 页has\u css? 将等待至 Capybara.default_max_wait_time 元素出现在页面上并返回的秒数 true false 基于该元素是否在该时间内位于页面上。因此,给定 Capybara.default_max_wait_time = 5

    if page.has_css?("div#my_div")
       puts "on page"
    else
       puts "not on page"
    end
    

    default_max_wait_time 通过传递 :wait 选项

    if page.has_css?("div#my_div", wait: 10)  # will wait up to 10 seconds
      ...
    

    如果不需要布尔响应,而是希望确保元素存在,则可以执行以下任何操作:

    page.assert_selector(:css, 'div#my_div') # :css is the default so can usually be omitted
    page.assert_css('div#my_div') # minitest
    expect(page).to have_css('div#my_div') # RSpec
    

    如果元素未出现

    如果需要实际元素,可以使用 find

    el = page.find(:css, 'div#my_div') # :css is the default and can usually be omitted
    

    将等待元素出现,并在找到元素时返回该元素。如果在中未找到元素 默认最大等待时间 秒,它将引发异常。

    注意:基本上,唯一的非等待方法是 all first :count , :minimum , :maximum , :between click_link click_button find(...).click