コード例 #1
0
ファイル: test_locators.py プロジェクト: amisol/rpaframework
    def test_load_by_name_invalid_name(self):
        with temp_cwd() as cwd:
            path = Path(cwd) / "locators.json"
            with open(path, "w") as fd:
                fd.write(json.dumps(CURRENT))

            with pytest.raises(ValueError):
                LocatorsDatabase.load_by_name("RobotSpareBin.Paswerd")
コード例 #2
0
def parse(locator: LocatorType) -> Locator:
    """Parse locator string literal into a ``Locator`` instance.

    For example: "image:path/to/image.png" -> ImageLocator(path="path/to/image-png")
    """
    if isinstance(locator, Locator):
        return locator

    try:
        typename, _, value = str(locator).partition(":")
    except ValueError as err:
        raise ValueError(f"Invalid locator format: {locator}") from err

    if not value:
        typename, value = "alias", typename

    typename = typename.strip().lower()
    if typename == "alias":
        return LocatorsDatabase.load_by_name(_unquote(value))
    else:
        klass = TYPES.get(typename)
        if not klass:
            raise ValueError(f"Unknown locator type: {typename}")

        args = [_unquote(arg) for arg in value.split(",")]
        return klass(*args)
コード例 #3
0
ファイル: locators.py プロジェクト: robocorp/rpaframework
    def _load_by_alias(self, criteria: str) -> str:
        try:
            locator = LocatorsDatabase.load_by_name(criteria, self._locators_path)
            if isinstance(locator, WindowsLocator):
                return locator.value
        except ValueError:
            pass

        return criteria
コード例 #4
0
ファイル: test_locators.py プロジェクト: amisol/rpaframework
    def test_load_by_name(self):
        with temp_cwd() as cwd:
            path = Path(cwd) / "locators.json"
            with open(path, "w") as fd:
                fd.write(json.dumps(CURRENT))

            locator = LocatorsDatabase.load_by_name("RobotSpareBin.Password")
            assert isinstance(locator, BrowserLocator)
            assert locator.strategy == "id"
            assert locator.value == "password"
コード例 #5
0
ファイル: Browser.py プロジェクト: mcspx/rpaframework
    def _find_by_alias(self, parent, criteria, tag, constraints):
        """Custom 'alias' locator that uses locators database."""
        del constraints
        locator = LocatorsDatabase.load_by_name(criteria, self.locators_path)

        if not isinstance(locator, BrowserDOM):
            raise ValueError(f"Not a browser locator: {criteria}")

        selector = "{strategy}:{value}".format(strategy=locator.strategy,
                                               value=locator.value)

        return self._element_finder.find(selector, tag, parent)
コード例 #6
0
ファイル: test_locators.py プロジェクト: amisol/rpaframework
 def test_load_by_name_invalid_path(self):
     with pytest.raises(ValueError):
         LocatorsDatabase.load_by_name("RobotSpareBin.Password", "no-exist.json")