2016-03-05 21 views
0

我已經嘗試了很多東西來訪問表中的單元格。我實際上已經找到了我需要的基於內聯搜索的行,但是當我將columnindex更改爲找到的行的列時,我無法獲得mouse.click(cell);做任何事。請參閱下面的代碼。它已被修改了很多次!我也用記錄來捕獲有關單元的信息。 的方法:編碼的UI c# - 如何點擊一個表htmlcell

`  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; 
    } 

表和單元格 - 我修改這從記錄,真的不知道這是什麼一樣,但我沒有當我有困難從COMBOX選擇類似的東西:

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 
    } 

`

回答

0

所以,我找到了我自己的答案 - 即使這不是最好的 - 它的工作原理!

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

' 我用這個來代替mouse.click(cell); TAB突出顯示單元格中的按鈕,並且Enter觸發事件。