我正在将Appium与WinAppDriver一起使用来控制WinForms / WPF应用程序。
我正在寻找一种编程方式来获取已检索元素上可用属性的列表。
我当前的想法是要求className并使用它来查找我已预先配置的属性的静态字典。
var element = driver.FindElementByXPath(xPath);
var properties = element.getProperties(); // Is there something I can call here?
答案 0 :(得分:0)
您可以使用<DataTemplate x:Key="GridLayoutTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Rectangle Grid.Row="0" Grid.Column="0" Fill="{Binding RowColor}" />
<TextBlock Text="{Binding RowText}" />
</Grid>
</DataTemplate>
<DataTemplate x:Key="ListLayoutTemplate">
<StackPanel VerticalAlignment="Stretch">
<ItemsControl ItemsSource="{Binding RowData}" ItemTemplate="{StaticResource GridLayoutTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1" Columns="9"></UniformGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<Grid Background="Green">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Rectangle Grid.Row="0" Grid.Column="0" Fill="{Binding TileColor}" />
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding TileText}" />
</Grid>
</StackPanel>
</DataTemplate>
来获取值。您还可以使用其他属性,例如element.GetAttribute("Value")
,LegacyState
,Value.Value
,IsEnabled
,IsOffscreen
等。您可以在Inspect中抓住属性列表。 Windows工具随附的exe(UI访问)
答案 1 :(得分:0)
这不是最好的解决方案,但我想我会提到它,以防其他人发现它有用:
可以获取pagesource的xml并查看其中的属性。这可以通过调用driver.PageSource
来完成,它将返回一个xml字符串。
希望有人觉得这有用。