tests/testthat/test-elem_filter.R

test_that("Numeric filters work", {
  session <- selenider_test_session()

  elements <- ss(".class")

  expect_equal(
    elements[2:5][[3]]$selectors[[1]]$filter[[1]],
    4
  )

  expect_equal(
    elements[-1][3]$selectors[[1]]$filter[[1]],
    4
  )

  expect_equal(
    elements[-3:-5][1:5]$selectors[[1]]$filter[[1]],
    c(1:2, 6:8)
  )

  expect_equal(
    elements[-5:-10][-2]$selectors[[1]]$filter[[1]],
    c(-5:-10, -2)
  )

  expect_equal(
    elements[-5:-10][-7]$selectors[[1]]$filter[[1]],
    -5:-10
  )

  expect_s3_class(suppressWarnings(elements[1:5][6]), "empty_selenider_elements")
})

test_that("Other filters work", {
  session <- selenider_test_session()

  open_url("https://ashbythorpe.github.io/selenider/articles/test-site.html")

  elements <- elem_children(s(".actions-test"))

  inputs <- elem_filter(elements, has_name("button") || has_name("input"))

  elem_expect(inputs, has_length(3))

  submit_button <- elem_find(inputs, has_attr("type", "submit"))

  expect_true(
    submit_button == find_element(s(".actions-form"), "input[type='submit']")
  )

  first_input <- elem_find(elements, has_name("input"))

  expect_true(
    first_input == s(".actions-input")
  )
})

Try the selenider package in your browser

Any scripts or data that you put into this service are public.

selenider documentation built on April 3, 2025, 5:51 p.m.