Source code for capybara.queries.style_query

from capybara.helpers import desc, toregex
from capybara.queries.base_query import BaseQuery


[docs]class StyleQuery(BaseQuery): """ Queries for computed style values of a node. Args: expected_styles (Dict[str, str]): The expected style names and values. wait (bool | int | float, optional): Whether and how long to wait for synchronization. Defaults to :data:`capybara.default_max_wait_time`. """ def __init__(self, expected_styles, wait=None): self.expected_styles = expected_styles self.actual_styles = {} self.options = { "wait": wait} self.node = None @property def wait(self): """ int | float: How long to wait for synchronization. """ return self.normalize_wait(self.options["wait"])
[docs] def resolves_for(self, node): """ Resolves this query relative to the given node. Args: node (node.Base): The node to be evaluated. Returns: int: The number of matches found. """ self.node = node self.actual_styles = node.style(*self.expected_styles.keys()) return all( toregex(value).search(self.actual_styles[style]) for style, value in iter(self.expected_styles.items()))
@property def failure_message(self): """ str: A message describing the query failure. """ return ( "Expected node to have styles {expected}. " "Actual styles were {actual}").format( expected=desc(self.expected_styles), actual=desc(self.actual_styles))