diff --git a/Sources/pyOpenRPA/Robot/UIWeb.py b/Sources/pyOpenRPA/Robot/UIWeb.py index da5043cd..088a01e0 100755 --- a/Sources/pyOpenRPA/Robot/UIWeb.py +++ b/Sources/pyOpenRPA/Robot/UIWeb.py @@ -526,8 +526,35 @@ def UIOSelectorClick(inUIOSelectorStr: str): :param inUIOSelectorStr: XPATH или CSS селектор UI элемента на web странице. Подсказки по CSS: https://devhints.io/css Подсказки по XPath: https://devhints.io/xpath :type inUIOSelectorStr: str """ - PageJSExecute(inJSStr=f"document.querySelector('{inUIOSelectorStr}').click()") + if UIOSelectorDetect(inUIOSelectorStr=inUIOSelectorStr) == "CSS": + PageJSExecute(inJSStr=f"document.querySelector('{inUIOSelectorStr}').click()") + else: + PageJSExecute(inJSStr=f"document.evaluate('{inUIOSelectorStr}', document, null , XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click()") + +def UIOSelectorSetValue(inUIOSelectorStr: str, inValue: str): + """L+,W+: Установить значение элемента с селектором inUIOSelectorStr. + + .. code-block:: python + # UIWeb: Взаимодействие с ui web + from pyOpenRPA.Robot import UIWeb + UIWeb.BrowserChromeStart() + UIWeb.PageOpen("https://www.google.com/") + lUIOSelectorStr = "/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input" + lValue = "pyOpenRPA" + UIWeb.UIOSelectorSetValue(inUIOSelectorStr = lUIOSelectorStr, inValue = lValue) + UIWeb.BrowserClose() + + :param inUIOSelectorStr: XPATH или CSS селектор UI элемента на web странице. Подсказки по CSS: https://devhints.io/css Подсказки по XPath: https://devhints.io/xpath + :type inUIOSelectorStr: str + :param inValue: Значение, которое необходимо установить + :type inValue: str + """ + if UIOSelectorDetect(inUIOSelectorStr=inUIOSelectorStr) == "CSS": + PageJSExecute(inJSStr=f"document.querySelector('{inUIOSelectorStr}').value='{inValue}'") + else: + PageJSExecute(inJSStr=f"document.evaluate('{inUIOSelectorStr}', document, null , XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value='{inValue}'") + def UIOSelectorWaitAppear(inUIOSelectorStr:str, inWaitSecFloat:float=UIO_WAIT_SEC_FLOAT, inWaitIntervalSecFloat:float = UIO_WAIT_INTERVAL_SEC_FLOAT): """L+,W+: Ожидать появление UI элемента на веб странице (блокирует выполнение потока), заданного по UIO селектору inUIOSelectorStr. Выполнять ожидание на протяжении inWaitSecFloat (по умолчанию 60 сек.). Проверка производится с интервалом inWaitIntervalSecFloat (по умолчанию 1 сек.) diff --git a/changelog.md b/changelog.md index a8055e93..b67d51d6 100755 --- a/changelog.md +++ b/changelog.md @@ -26,6 +26,8 @@ AGT - AGENT - - Убрали лишний print из Screen.BoxAnchorRuleCheck - - pyOpenRPA.Robot.UIWeb.BrowserChromeStart - добавлен флаг печати в PDF и директория для сохранения при инициализации браузера - - Добавлена новая функция - pyOpenRPA.Robot.UIWeb.PagePrint. Вызывает окно печати браузера. +- - pyOpenRPA.Robot.UIWeb.UIOSelectorClick - исправлено. Теперь работает и с XPath, и с CSS +- - Добавлена новая функция - pyOpenRPA.Robot.UIWeb.UIOSelectorSetValue. Изменение атрибута value по заданному UIOSelector элемента. [1.3.1] - ОРКЕСТРАТОР