UIAutomation с помощью ToolStripStatusLabel

У меня есть приложение WinForms, и я не могу получить доступ к тексту ToolStripStatusLabelсквозной UIAutomation. Microsoft подразумевает, что поддержка StatusStrips (и предположительно элементов внутри них) ограничена, но это похоже на достаточно простой вариант использования, чтобы он работал.

Элемент управления отображается ControlType.Editв UISpy и отображается как текстовое поле только для чтения, однако его значение всегда совпадает с его именем, а не его текстом.

Свойства в UISpy следующие:

AutomationElement
  General Accessibility
    AccessKey:  ""
    AcceleratorKey: ""
    IsKeyboardFocusable:    "False"
    LabeledBy:  "(null)"
    HelpText:   ""

  State
    IsEnabled:  "True"
    HasKeyboardFocus:   "False"

  Identification
    ClassName:  ""
    ControlType:    "ControlType.Edit"
    Culture:    "(null)"
    AutomationId:   "StatusBar.Pane0"
    LocalizedControlType:   "edit"
    Name:   "My Label"
    ProcessId:  "3972 (*****)"
    RuntimeId:  "42 134002 0"
    IsPassword: "False"
    IsControlElement:   "True"
    IsContentElement:   "True"

  Visibility
    BoundingRectangle:  "(9, 273, 79, 17)"
    ClickablePoint: "48,281"
    IsOffscreen:    "False"

ControlPatterns
  GridItem
    Row:    "0"
    Column: "0"
    RowSpan:    "1"
    ColumnSpan: "1"
    ContainingGrid: ""status bar" "statusStrip""

  Value
    Value:  "My Label"
    IsReadOnly: "True"

В принципе, я надеюсь на какой-то способ пойти myLabel.Text = "something"и смогу получить эту ценность как-то через UIAutomation.

.net,windows,winforms,accessibility,ui-automation,

1

Ответов: 3


1 принят

Установите AccessibleNameсвойство в дополнение к .Textэлементу ToolStripStatusLabelуправления. Он работает для меня с использованием White в аналогичном сценарии:

statusLabel.Text = statusLabel.AccessibleName = "New status value";


0

Я должен был обойти это, имея две отдельные метки с разным текстом, и показывать и скрывать соответствующий. Этого достаточно для моих целей (тестирование с White), но я очень удивлен тем, что UIAutomation не отображает текстовое значение - в основном это означает, что весь текст в барах состояния в приложениях WinForms недоступен для чтения с экрана.


0

У меня никогда не было проблемы с извлечением текста ярлыка, подобного тому, что вы описываете. На самом деле AutomationIdв моем приложении все равно. Тот факт, который ControlTypeпоказан как ControlType.Edit, вводит в заблуждение. например, следующее будет работать

statusText = (string)automationElement.GetCurrentPropertyValue(ValuePattern.ValueProperty);

Где automationElementнаходится метод поиска ControlType.Editс помощью AutomationIdметода "StatusBar.Pane0".

.net, окно, WinForms, доступность, щ-автоматизация,
Похожие вопросы
Яндекс.Метрика