WiniumDesktop. Как получить свойство элемента ToggleState

Есть Java приложение.
Есть чекбокс, в UI Spy его свойство:

ControlPatterns
Toggle
ToggleState: “On”

Как проверить состояние элемента?
element.getAttribute(“ToggleState”) выдает null.

Используйте свойство веб-элемента is_selected()

1 лайк

Спасибо огромное… Чет я пропустил этот метод :).
Еще один вопрос, если можно:
Есть ли возможность, используя Winium, найти элементы, в имени которых есть определенное значение?
Например, найти все элементы в имени которых есть “Session”.
Заранее спасибо.

Да, это возможно используя поиск по XPath. Это поможет составить запрос Winium.Cruciatus/CheckFindByXPath.cs at master · 2gis/Winium.Cruciatus · GitHub

1 лайк

Столкнулся с проблемой поиска по xpath элемента, который находится далеко в дереве. Поиск занимает 3-4 минуты. При этом поиск по имени, или по xpath root элемента проходит моментально… Xpath с // ищет от parent элемента или от рута? Как можно выйти из ситуации?

WebElement parent = driver.findElement(By.name("View Name"));
parent.findElement(By.xpath("//*[contains(@Name, 'Sub Child Name')]"));

Заранее спасибо.

Типо нужные тебе элементы не непосредственные дети parent? Может быть *//*[… Я оч не люблю xpath, а точнее каждый раз опытным путем определяю его, так что сильнее помочь не могу :slight_smile:
В любом случае простой поиск виниума работает в глубину, а по xpath в ширину.

Нужные элементы как раз дети (где-то 3-го порядка). Но такое ощущение, что он ищет от root. Т.к. время ±одинаковое, что от драйвера искать, что от элемента, а сам элемент очень “глубоко” от рута. Сегодня еще попробую поэкспериментировать, В любом случае спасибо.

Вообщем да, я не знаю стопудово как начать xpath чтоб это означало - от текущего в самую глубину ))))
Так что когда найдется решение, отпиши сюда, это будет очень полезный опыт.

В общем пришел к выводу, что //*[] ищет по всему драйверу даже от элемента, *[] - только первый child от драйвера или элемента. Пока воркэраунд:

WebElement parent = driver.findElement(By.name("View Name"));
parent.findElement(By.xpath("*[contains(@Name, 'ElementFirstChild Name')]//*[contains(@Name, 'FarChild Name')]"));

Как я понял Drag and Drop еще не запилили? Планируется ли вообще в ближайшее время, очень не хватает :frowning:

Извиняюсь за долгий ответ.
Для drag&drop нужно уметь перемещать мышку, зажимать и отжимать кнопку мыши. Да, первая часть то есть, а вот второй нет.
Вроде не сложно реализовать и даже открывали PR по этому поводу, но я отсутствовал и не мог посмотреть. В любом случае стоит завести на это issue :wink:

Спасибо за ответ. Надеюсь в скором времени появится.
Пока нашел workaround - сделал метод который вытаскивает из свойства элемента координаты и возвращает rectangle, ну а его использую для Sikuli DnD…