WinApplicationDriver从datagrid获取行

时间:2017-09-22 09:05:06

标签: c# wpf selenium datagrid appium

我有什么:

namespace DataGrid
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new ViewModelDataGrid();
        }
    }

    public class ViewModelDataGrid
    {
        public ObservableCollection<string> Items { get; set; }

        public ViewModelDataGrid()
        {
            Items = new ObservableCollection<string>();

            for (int i = 0; i < 1000; i++)
            {
                Items.Add(i.ToString());
            }
        }

    }
}

的Xaml

 <Grid>
        <DataGrid ItemsSource="{Binding Items}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Line No" Binding="{Binding .}" IsReadOnly="True"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>

我想做的是:

DesiredCapabilities appDataGridCapabilities = new DesiredCapabilities();
appDataGridCapabilities.SetCapability("app", @"C:\Users\a\Documents\visual studio 2015\Projects\DataGrid\DataGrid\bin\Debug\DataGrid.exe");
appDataGridCapabilities.SetCapability("deviceName", "WPF");
var dataGridSession = new WindowsDriver<WindowsElement>(new Uri(@"http://127.0.0.1:4723"), appDataGridCapabilities);
dataGridSession.Manage().Window.Position = new System.Drawing.Point(0, 0);
var elements = dataGridSession.FindElementByClassName("DataGrid").FindElementsByClassName("DataGridRow");

我正在尝试从datagrid获取所有行。但是目前我只获得了由于绑定系统和虚拟化而在屏幕上显示的那些行。是否有可能以某种方式从DataGrid获取未显示的所有行?

1 个答案:

答案 0 :(得分:1)

  

是否有可能以某种方式获取DataGrid中未显示的所有行?

仅当您在应用程序中禁用虚拟化时:

<DataGrid VirtualizingPanel.IsVirtualizing="False" ... />

对于已在内存中可用虚拟化的行,没有DataGridRow行容器,您无法获得对不存在的对象的引用。

相关问题