Как получить информацию о цвете ячеек WinCell с codedui? - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу получить цвет ячейки на wintable, и я думаю, что мне нужно получить стиль цвета для этого, но я не знаю, возможно ли получить информацию о стиле winCell в codedui.Я могу получить доступ к ячейке и значению внутри нее, но не могу получить какую-либо информацию о стиле, такую ​​как цвет.

Я попытался найти код в стеке, однако он выдает ошибку для ячеек

        for (int i = 0; i < uIG1Table.Rows.Count; i++)
        {
            for (int j = 0; j < uIG1Table.Rows[i].Cells.Count; j++)
            {
                uIG1Table.Rows[i].Cells[j].Style.BackColor = /*color you want*/
            }
        }

Iможет получить доступ к ячейке, как показано ниже, однако нет никакого свойства цвета или стиля, связанного с отдельными ячейками

        WinTable uIG1Table = this.UIProMANAGEWindow.UIStopListWindow.UIG1Window.UIG1Table;
        WinRow dataGridrow = uIG1Table.GetRow(0);
        foreach (WinCell cell in dataGridrow.Cells)
        {
          ....
        }

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете указать эти значения в свойстве тестируемой программы.Используйте собственность, к которой у вас есть доступ.В этом примере программы я сериализовал цвет фона ячейки для json и выставил его через свойство AccessibleDescription из моего DataGridView.

Образца программы, для которого я напишу кодированный тест пользовательского интерфейса:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsTestApplication
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //Typically, the datasource is a db, xml, json, etc...
            var dataSource = new[]
            {
                new{ Column1 = "value1", Column2 = "value2", Column3 = "value3"},
                new{ Column1 = "value1", Column2 = "value2", Column3 = "value3"},
                new{ Column1 = "value1", Column2 = "value2", Column3 = "value3"},
                new{ Column1 = "value1", Column2 = "value2", Column3 = "value3"}
            }.ToList();

            dataGridView1.DataSource = dataSource;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Setting the background color for a cell in the dataGridView.
            dataGridView1.Rows[1].Cells[1].Style.BackColor = Color.Red;

            //This dictionary object will be serialized and used to tranfer the cell color information.
            Dictionary<int, List<Color>> gridColors = new Dictionary<int, List<Color>>();
            int rowIndex = 0;

            //this code iterates the table and stores the information in the dictionary.
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                gridColors.Add(rowIndex, new List<Color>());

                foreach (DataGridViewCell cell in row.Cells)
                {
                    gridColors[rowIndex].Add(cell.Style.BackColor);
                }

                rowIndex++;
            }

            string json = JsonConvert.SerializeObject(gridColors);
            dataGridView1.AccessibleDescription = json;
        }
    }
}

Вы должны разрешать сериализацию и раскрытие этих данных только в отладочной версии, а не в версии выпуска вашего программного обеспечения.Нет необходимости раскрывать эту информацию в действующем программном продукте.

Приведенный ниже код демонстрирует, как десериализовать эту информацию и использовать ее в тестах с закодированным пользовательским интерфейсом:

using CodedUITestProject1.UIMap1Classes;
using Microsoft.VisualStudio.TestTools.UITesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Drawing;

namespace CodedUITestProject1
{
    /// <summary>
    /// Summary description for CodedUITest1
    /// </summary>
    [CodedUITest]
    public class CodedUITest1
    {
        public CodedUITest1()
        {
        }

        [TestMethod]
        public void CodedUITestMethod1()
        {
            UIMap1 uiMap = new UIMap1();

            //The UIDataGridViewTable has been added to the UIMap using the inspection tool from VS.
            string jsonToConvert = uiMap.UIForm1Window.UIDataGridView1Window.UIDataGridViewTable.AccessibleDescription;
            Dictionary<int, List<Color>> gridRowColors = JsonConvert.DeserializeObject<Dictionary<int, List<Color>>>(jsonToConvert);

            //iterate the dictionary to retrieve the color for each cell.
            int rowIndex = 0;

            for (int i = 0; i < gridRowColors.Count - 1; i++)
            {
                List<Color> rowCellColors = gridRowColors[rowIndex];

                foreach (Color cellColor in rowCellColors)
                {
                    //Check what color your cell has here.
                }
            }
        }
    }
}

Снимок экранаданные о цвете подвергаются: The test form and inspection tool details for the DataGridView.

...