基于条件在记录列表上按下按钮

问题描述:

我有一个记录列表,例如状态,部门,金额,标题和一些按钮。 如果我想断言比如我用下面的代码标题:基于条件在记录列表上按下按钮

private IWebElement GetTitleElement(int actionRowNumber) 
    { 
     var xpath = $"//tr[@id = 'ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00__{actionRowNumber}']/td[9]"; 
     return BrowserFactory.Driver.FindElement(By.XPath(xpath)); 
    } 

我做的类型,状态同样,部门

然后我用了一个尝试捕捉方法要经过各记录,直到我发现在系统中所需的记录:

public void CheckActionxxx(ActionTypes type, Enum.Departments departments, Enum.ActionStatus actionstatus, string title) 
    { 
     Wait(); 
     var actiontype = type; 
     try 
     { 
      for (var i = 0; i <= 4; i++) 
      { 
       if (GetTitleElement(i).Text == title && GetActionTypeElement(i).Text == actiontype.ToString()) 
       { 
        Assert.AreEqual(type.ToString(), GetActionTypeElement(i).Text); 
        Assert.AreEqual(actionstatus.ToString(), GetActionStatusElement(i).Text); 
        Assert.AreEqual(departments == Enum.Departments.None ? " " : departments.ToString(), 
        GetActionDepartmentElement(i).Text); 
        return; 
       } 
      } 
      throw new NoSuchElementException(); 
     } 
     catch (NoSuchElementException) 
     { 
      throw new NoSuchElementException($"Not found with'{title}'"); 
     } 
    } 

因为ID是唯一曾在数之差(如0,1,2),我能够用整数

部: // [@ ID = “ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00__0”]/TD [5] // [@ ID = “ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00__1”]/TD [5] // * [@ ID = “ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00__2”]/TD [5]

状态: // [@ ID = “ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00__0”]/TD [2] // [@ ID = “ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00__1”]/TD [2] // * [@ id =“ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00__2”]/td [2]

名称: // [@ ID = “ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00__0”]/TD [9] // [@ ID = “ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00__1”]/TD [9] // * [@ ID =“ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00__2 “]/TD [9]

现在我想用一个尝试捕捉该发现基础上的工作方式相同,但该按钮的ID的按钮如下: // [@ ID =” ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00_ctl04_ButtonClose “] // [@ id =”c tl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00_ctl06_ButtonClose “] // [@ ID =” ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00_ctl08_ButtonClose “] // [@ ID =” ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00_ctl10_ButtonClose “] // * [@ ID =” ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00_ctl12_ButtonClose“]

正如你可以看到它开始于ctl04并继续以两个步骤进行。

我想不出如何设计我的私人webelement。我尝试过:

private IWebElement GetActionCloseButtonElement(int actionRowNumber) 
    { 
     var xpath = $"//tr[@id = 'ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00_{actionRowNumber}_ButtonClose']"; 
     return BrowserFactory.Driver.FindElement(By.XPath(xpath)); 
    } 

但是这并不奏效。

像这样的东西应该工作。

从xpath开始,actionRowNumber应该是04,06,08,10,12。

private IWebElement GetActionCloseButtonElement(int actionRowNumber) 
{ 
return BrowserFactory.Driver.FindElement(By.Xpath("//tr[@id = 'ctl00_ctl00_CPH_CPH_ActionsOverviewControl1_RadGridActions_ctl00_ctl"+ actionRowNumber +"_ButtonClose']")); 
} 
+0

我得到NoSuchElementException异常 – xxx2017

+0

尝试这种交换在xapth以“// * [@ ID =在与*开始时交换tr和看看会发生什么保持休息一样 – redp

+0

我在哪里把“actionRowNumber = 04,06,08,10,12'? – xxx2017