0

テーブル内のセルにアクセスするために多くのことを試みました。内部テキスト検索に基づいて必要な行を実際に見つけましたが、columnindex を見つかった行の列に変更すると、mouse.click(cell); を取得できません。何をするにも。以下の私のコードを見てください。何度も改造しました!また、レコードを使用してセルに関する情報を取得しました。メソッド:

`        public string SelectExistingCustomer(UITestControl parent, TestContext TestContext, string sLastName)
    {
        Controls control = new Controls(this.parent);
        EditControl econtrol = new EditControl(this.parent);
        HtmlTable tCustomerSearch = new HtmlTable(this.parent);
        //HtmlTable tCustomerSearch1 = tCustomerSearch;
        HtmlCell cell = new HtmlCell(tCustomerSearch);
        //HtmlCell cell = GetCell;
        string sFullName = "";
        string sRowIndex = "";

        if (sLastName != "")
        {
            try
            {
                // CodedUI scrolls items into view before it can click them
                bool notfound = true;
                int NumberOfpages = 0;
                while (notfound)
                {
                    tCustomerSearch.SearchProperties.Add(HtmlTable.PropertyNames.TagName, "TABLE");
                    Trace.WriteLine("####tCustomerSearch??? : " + tCustomerSearch + " : TABLE.");
                    tCustomerSearch.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
                    int rowcount = tCustomerSearch.RowCount;
                    Trace.WriteLine("Row###: " + rowcount + ".");
                    HtmlRow lastRow = (HtmlRow)tCustomerSearch.Rows[rowcount - 1];
                    //lastRow.EnsureClickable();

                    NumberOfpages++;
                    cell.SearchProperties.Add(HtmlCell.PropertyNames.InnerText, sLastName, PropertyExpressionOperator.Contains);
                    cell.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
                    if (cell.TryFind())
                    {
                        notfound = false;
                        sFullName = cell.GetProperty(HtmlCell.PropertyNames.InnerText).ToString();
                        sRowIndex = cell.GetProperty(HtmlCell.PropertyNames.RowIndex).ToString();
                        Trace.WriteLine(string.Format("found name at page {0}", NumberOfpages));
                        Trace.WriteLine(string.Format("Table row nr: {0}", cell.RowIndex));
                        Trace.WriteLine("cell####: " + cell + ".");
                    }
                    else Trace.WriteLine("NOT FOUND: CELL###:" + cell + ". And sFullName: " + sFullName + ".");
                }
                Trace.WriteLine("CELL###:" + cell + ". And sFullName: " + sFullName + ". And sRowIndex: " + sRowIndex + ".");
                cell.SearchProperties.Add(HtmlCell.PropertyNames.RowIndex, sRowIndex);
                cell.SearchProperties.Add(HtmlCell.PropertyNames.ColumnIndex, "0");
                cell.SearchProperties[HtmlCell.PropertyNames.InnerText] = "Get";
                cell.SetFocus();
                //HtmlInputButton stry = new HtmlInputButton(cell);
                Mouse.Click(cell);
                //Mouse.Click(stry);

                Assert.IsTrue(!notfound);
            }
            catch (Exception ex)
            {
                Trace.WriteLine("Failed to Search and find. Exception: " + ex + ".");
                return "Failed";
            }
        }
        //else - For the Future 
        return sFullName;
    }

テーブルとセル - 記録からこれを変更しましたが、これが何をするのかよくわかりませんが、コンボックスからの選択が困難なときに同様のことを行いました:

    public class tCustomerSearch : HtmlTable
    {
        public tCustomerSearch(UITestControl searchLimitContainer) :
                base(searchLimitContainer)
        {
            #region Search Criteria
            this.FilterProperties[HtmlTable.PropertyNames.ControlDefinition] = "class=\"table table-striped\"";
            this.FilterProperties[HtmlTable.PropertyNames.Class] = "table table-striped";
            this.FilterProperties[HtmlTable.PropertyNames.TagInstance] = "1";
            #endregion
        }

        #region Properties
        public HtmlCell GetCell
        {
            get
            {
                if ((this.mGetCell == null))
                {
                    this.mGetCell = new HtmlCell(this);
                    #region Search Criteria
                    this.mGetCell.SearchProperties[HtmlCell.PropertyNames.InnerText] = "Get";
                    //this.GetCell.SearchProperties[HtmlCell.PropertyNames.MaxDepth] = "3";
                    Trace.WriteLine("###sLastName: " + sLastName + ". And mGetCell: " + mGetCell + ".");
                    #endregion
                }
                return this.mGetCell;
            }
        }
        #endregion
        // public string ctrlPropertyValue { get; private set; }
        public string sLastName { get; }
        #region Fields
        private HtmlCell mGetCell;
        #endregion
    }

`

4

1 に答える 1

0

だから、私は自分の答えを見つけました-これは最高ではありませんが-うまくいきます!

    `                    Keyboard.SendKeys("{TAB}");
                         Keyboard.SendKeys("{ENTER}");

' これを mouse.click(cell); の代わりに使用します。TAB はセル内のボタンを強調表示し、Enter はイベントをトリガーします。

于 2016-03-05T19:24:30.890 に答える