0

我正在做的项目有点像机器人,我抓取我的应用程序的进程(用于一些自动问答测试),然后在应用程序中添加值和编辑值,看看输出是否符合预期。

好吧,我已经获得了应用程序窗口(称为窗口),并且我正在寻找已添加到其他应用程序中的 DataGridView 项。我知道它叫做“dataGridView1”,我使用的 UI 界面(SpecFlow 和 White.Core)不支持从另一个应用程序中获取 DataGridView 项

作为一种解决方法,我将 DataGridView 项作为一个表来获取。现在,问题。我正在尝试在数据网格视图中设置一个单元格值,其中该单元格包含一个 ComboBox,该表不支持选择。每次我执行 Cell.SetValue(string) 时,它都会临时设置值,直到我在我的 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);

    }
4

1 回答 1

0

对于问答自动化,我强烈推荐 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 中所做的那样

于 2013-07-23T00:01:28.513 回答