编码的用户界面 - 单击动态生成的表格单元格中的超链接

时间:2018-05-08 10:06:01

标签: c# coded-ui-tests web-testing

我的测试条件是单击单元格中的超链接。 - >表格式Tr,Td

表格列 名称 - 状态 - 链接

- >首先,我们搜索该行以匹配该名称。

- >在我们的搜索找到行之后,我们检查第二列中相同行的状态。

- >状态从处理更改为完成。

- >状态为完成时,将在第3列中生成超链接。哪个需要点击。

通过F12检查源代码。链接生成为第3列中单元格的子元素。 所以我试图找到row.cell(2).GetChildren [0];

但由于子元素仅在生成链接时存在,这取决于应用程序加载。

我可以保持playback.wait();但除非其死胡同,否则不得在我的组织中使用该条件。

我给搜索属性和等待控制存在。但那也行不通。

任何人都可以指导如何等待当前UI中不存在的链接。

我的代码如下所示。

HtmlRow row = FindReport(reportName); // Method which finds row
VerifyStatus(reportName, status); // Method verifies status in the row and 
returns true if complete
HtmlSpan link = new HtmlSpan(row);
link.SearchProperties.Add(HtmlSpan.PropertyNames.InnerText, "Order", 
PropertyExpressionOperator.Contains);
for (int i = 0; i < 60; i++)
{
  if (!link.WaitForControlExist())
  {
   Keyboard.SendKeys(HistoryPage, "{F5}");
  }
else
  {
   Mouse.Click(row.Cells[2].GetChildren()[0]);
   return;
  }
}

我被困在这里。

1 个答案:

答案 0 :(得分:0)

也许您需要使用某种自定义waitforcontrolexist,您可以使用自己的步骤来研究控件和您自己的特定超时。

我正在开发桌面软件项目,所以不是html项目,但我想它应该以同样的方式工作。

以下是我在一个更通用的函数中使用的代码的一部分,如果有帮助的话,请重新调整一下:

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table (id SERIAL PRIMARY KEY,balance INT NOT NULL);

INSERT INTO my_table VALUES (1,100);

INSERT INTO my_table (balance) SELECT MIN(balance-50) FROM my_table HAVING MIN(balance-50) >= 0;

SELECT * FROM my_table;
+----+---------+
| id | balance |
+----+---------+
|  1 |     100 |
|  2 |      50 |
+----+---------+

INSERT INTO my_table (balance) SELECT MIN(balance-50) FROM my_table HAVING MIN(balance-50) >= 0;

SELECT * FROM my_table;
+----+---------+
| id | balance |
+----+---------+
|  1 |     100 |
|  2 |      50 |
|  3 |       0 |
+----+---------+

INSERT INTO my_table (balance) SELECT MIN(balance-50) FROM my_table HAVING MIN(balance-50) >= 0;

SELECT * FROM my_table;
+----+---------+
| id | balance |
+----+---------+
|  1 |     100 |
|  2 |      50 |
|  3 |       0 |
+----+---------+