AssertHTML v0.0.4 AssertHTML View Source

AssertHTML is an Elixir library for parsing and extracting data from HTML and XML with CSS.

Link to this section Summary

Types

HTML element attribute name

HTML element attributes

CSS selector

HTML response

Checking value

  • if nil should not exists

Link to this section Types

Link to this type

attribute_name() View Source
attribute_name() :: atom() | binary()

HTML element attribute name

Link to this type

attributes() View Source
attributes() :: [{attribute_name(), value()}]

HTML element attributes

Link to this type

css_selector() View Source
css_selector() :: String.t()

CSS selector

Supported selectors

PatternDescription
*any element
Ean element of type E
E[foo]an E element with a "foo" attribute
E[foo="bar"]an E element whose "foo" attribute value is exactly equal to "bar"
E[foo~="bar"]an E element whose "foo" attribute value is a list of whitespace-separated values, one of which is exactly equal to "bar"
E[foo^="bar"]an E element whose "foo" attribute value begins exactly with the string "bar"
E[foo$="bar"]an E element whose "foo" attribute value ends exactly with the string "bar"
E[foo*="bar"]an E element whose "foo" attribute value contains the substring "bar"
E[foo|="en"]an E element whose "foo" attribute has a hyphen-separated list of values beginning (from the left) with "en"
E:nth-child(n)an E element, the n-th child of its parent
E:first-childan E element, first child of its parent
E:last-childan E element, last child of its parent
E:nth-of-type(n)an E element, the n-th child of its type among its siblings
E:first-of-typean E element, first child of its type among its siblings
E:last-of-typean E element, last child of its type among its siblings
E.warningan E element whose class is "warning"
E#myidan E element with ID equal to "myid"
E:not(s)an E element that does not match simple selector s
E Fan F element descendant of an E element
E > Fan F element child of an E element
E + Fan F element immediately preceded by an E element
E ~ Fan F element preceded by an E element

HTML response

Link to this type

value() View Source
value() :: nil | String.t() | Regex.t()

Checking value

  • if nil should not exists

Link to this section Functions

Link to this function

assert_html(html, value) View Source
assert_html(html(), Regex.t()) :: html() | no_return()
assert_html(html(), block_fn()) :: html() | no_return()
assert_html(html(), css_selector()) :: html() | no_return()
assert_html(html(), attributes()) :: html() | no_return()

Asserts an attributes in HTML element

assert attributes

  • text – asserts an text element in HTML
  • :match - asserts containing value in html
iex> html = ~S{<div class="foo bar"></div><div class="zoo bar"></div>}
...> assert_html(html, ".zoo", class: "bar zoo")
~S{<div class="foo bar"></div><div class="zoo bar"></div>}

# check if `id` not exsists
iex> assert_html(~S{<div>text</div>}, id: nil)
"<div>text</div>"

Examples check :text

Asserts an text element in HTML

iex> html = ~S{<h1 class="title">Header</h1>}
...> assert_html(html, text: "Header")
~S{<h1 class="title">Header</h1>}

iex> html = ~S{<div class="container">   <h1 class="title">Header</h1>   </div>}
...> assert_html(html, ".title", text: "Header")
~S{<div class="container">   <h1 class="title">Header</h1>   </div>}

iex> html = ~S{<h1 class="title">Header</h1>}
...> try do
...>   assert_html(html, text: "HEADER")
...> rescue
...>   e in ExUnit.AssertionError -> e
...> end
%ExUnit.AssertionError{
  left: "HEADER",
  right: "Header",
  message: "Comparison `text` attribute failed.\n\n\t<h1 class=\"title\">Header</h1>.\n"
}

iex> html = ~S{<div class="foo">Some &amp; text</div>}
...> assert_html(html, text: "Some & text")
~S{<div class="foo">Some &amp; text</div>}

Selector

assert_html(html, "css selector")

    iex> html = ~S{<p><div class="foo"><h1>Header</h1></div></p>}
    ...> assert_html(html, "p .foo h1")
    ~S{<p><div class="foo"><h1>Header</h1></div></p>}

    iex> html = ~S{<p><div class="foo"><h1>Header</h1></div></p>}
    ...> assert_html(html, "h1")
    ~S{<p><div class="foo"><h1>Header</h1></div></p>}

Match elements in HTML

assert_html(html, ~r{<p>Hello</p>})
assert_html(html, match: ~r{<p>Hello</p>})
assert_html(html, match: "<p>Hello</p>")

\# Asserts an text element in HTML

Examples

iex> html = ~S{<div class="container">   <h1 class="title">Hello World</h1>   </div>}
...> assert_html(html, "h1", "Hello World") == html
true

iex> html = ~S{<div class="container">   <h1 class="title">Hello World</h1>   </div>}
...> assert_html(html, ".title", ~r{World})
~S{<div class="container">   <h1 class="title">Hello World</h1>   </div>}

assert elements in selector

assert_html(html, ".container table", ~r{<p>Hello</p>})
Link to this function

assert_html(html, value, block_fn) View Source
assert_html(html(), Regex.t(), block_fn()) :: html() | no_return()
assert_html(html(), attributes(), block_fn()) :: html() | no_return()
assert_html(html(), css_selector(), block_fn()) :: html() | no_return()

Link to this function

assert_html(html, css_selector, attributes, block_fn \\ nil) View Source
assert_html(html(), css_selector(), value(), block_fn() | nil) ::
  html() | no_return()
assert_html(html(), css_selector(), attributes(), block_fn() | nil) ::
  html() | no_return()

Link to this function

refute_html(html, value) View Source
refute_html(html(), Regex.t()) :: html() | no_return()
refute_html(html(), block_fn()) :: html() | no_return()
refute_html(html(), css_selector()) :: html() | no_return()
refute_html(html(), attributes()) :: html() | no_return()

Link to this function

refute_html(html, value, block_fn) View Source
refute_html(html(), Regex.t(), block_fn()) :: html() | no_return()
refute_html(html(), attributes(), block_fn()) :: html() | no_return()
refute_html(html(), css_selector(), block_fn()) :: html() | no_return()

Link to this function

refute_html(html, css_selector, attributes, block_fn \\ nil) View Source
refute_html(html(), css_selector(), value(), block_fn() | nil) ::
  html() | no_return()
refute_html(html(), css_selector(), attributes(), block_fn() | nil) ::
  html() | no_return()