基于条件在记录列表上按下按钮
我有一个记录列表,例如状态,部门,金额,标题和一些按钮。 如果我想断言比如我用下面的代码标题:基于条件在记录列表上按下按钮
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']"));
}
我得到NoSuchElementException异常 – xxx2017
尝试这种交换在xapth以“// * [@ ID =在与*开始时交换tr和看看会发生什么保持休息一样 – redp
我在哪里把“actionRowNumber = 04,06,08,10,12'? – xxx2017