我正在做的项目有点像机器人,我抓住我的应用程序的过程(它用于一些自动q&测试),然后在应用程序中添加值和编辑值,看看输出是否符合预期。
好吧,我已经得到了应用程序窗口(称为窗口),我正在寻找一个已添加到其他应用程序中的DataGridView项目。我知道它叫做“dataGridView1”,而我正在使用的UI界面(SpecFlow和White.Core)不支持从另一个应用程序中获取DataGridView项目
作为一种解决方法,我将DataGridView项目作为表格获取。 现在,问题。我试图在数据网格视图中设置该单元格的单元格值 包含一个ComboBox,Table不支持选择。每次我执行Cell.SetValue(字符串)时,它都会设置值临时,直到我在我的UI上导航
所以基本上,我的问题是,有什么方法可以设置一个表格单元格的值,该表格单元格应该是一个包含组合框的DataGridView单元格?我在代码中添加了一些注释,以便我想要发生什么
public void InsertValues(String price, String name)
{
//actually is the following
//DataGridView Data = window.Get<DataGridView>("dataGridView1");
//but this is not supported by the White.Core.UIItems.
Table Data = window.Get<Table>("dataGridView1");
int numRows = 0;
foreach (White.Core.UIItems.TableItems.TableRow tbr in Data.Rows)
numRows++;
//get the last row in the table
White.Core.UIItems.TableItems.TableRow leaseRow = Data.Rows[numRows - 1];
White.Core.UIItems.TableItems.TableCell PriceCell = leaseRow.Cells["price_val"];
White.Core.UIItems.TableItems.TableCell NameCell = leaseRow.Cells["name_val"];
//set the values of the various cells in the table
PriceCell.Click();
PriceCell.SetValue(pricingFormulaName);
PriceCell.Enter(pricingFormulaName);
NameCell.Click();
NameCell.SetValue(feeScheduleName);
NameCell.Enter(feeScheduleName);
}
答案 0 :(得分:0)
对于Q&amp; A自动化,我强烈建议使用Selenium ...您可以制作一个html脚本,或者在您的情况下使用C#应用程序运行它,并使用selenium指定
driver.FindElement(By.XPath("//div[@id='Body']/form/div/div[2]/div[13]/div/div/div/div[2]/button")).Click();
或
driver.FindElement(By.XPath("//a[contains(text(),'[add]')]")).Click();
如果它在css中你可以通过ID调用它...最好的部分是Selenium是开源的......或者也许在SpecFlow你可以指定一个CSS选择或XPath就像我在Selenium中所做的那样