【问题标题】:running into an issue at work accessing an index on a table在工作中访问表上的索引时遇到问题
【发布时间】:2017-02-02 03:45:02
【问题描述】:

我无法弄清楚为什么访问 HTML 表上的第 0 行第 3 列不起作用。我正在使用 C# 和 Visual Studio。

在调试时,如果我们让它通过一次,然后将其设置回将其作为变量抓取的同一行,那么它将起作用。但从来没有第一次通过,如果我去第 1 行,第 3 列,作为下一个单元格,它会很好地抓住它,以此类推,除了第 1 行(索引 0)之外的任何其他单元格。

代码片段如下,但我们无法弄清楚为什么它不能专门处理第一行,我们甚至尝试添加延迟以确保页面已完全加载并且仍然没有返回任何值。提醒您,它适用于除第一行之外的每一行,即使第一行中的项目已更改。第一行第四列中的项目将始终更改,因此没有特定的类或标识符,我每次都可以访问它。

任何线索为什么它不适用于第一行以及任何修复将不胜感激。我有一个解决方法,但这样做会更容易:

    using Microsoft.VisualStudio.TestTools.UITesting.HtmlControls;

    var browser = BrowserWindow.Launch("https://blah.com/");

    var cell = GetCell(browser, 2, 3);

    Console.WriteLine(cell.Value.ToString());

    HtmlCell GetCell(UITestControl parent, int row, int column)
            {
                var cell = new HtmlCell(parent);
                cell.SearchProperties.Add(HtmlCell.PropertyNames.RowIndex, row.ToString());
                cell.SearchProperties.Add(HtmlCell.PropertyNames.ColumnIndex, column.ToString());

                return cell;
            }

【问题讨论】:

  • 你能发布一个html样本吗?这可能有助于弄清楚发生了什么。
  • 您能否在var cell = GetCell(browser, 0, 3); 行之后放置一个断点(假设您尝试获取第 0 行第 3 列),然后查看返回的值是 null 还是抛出异常?另外我不确定行是 0 开始还是 1。
  • 因为我为英特尔工作并且这类信息是机密的,我不能@fallenidol。行确实从 0 开始,当我索引为 1 时,它给了我第二行中的文本。它返回空值。它将贯穿整个过程,但输出将为空白,但在访问 1、3 或任何其他行时效果很好
  • 明天我会看看我能做些什么来以一般形式提供有关 html 的更多信息。明天太平洋标准时间 2 点到 6 点之间发帖
  • 请阅读minimal reproducible example。许多人发现创建minimal reproducible example 可以帮助他们自己解决问题。

标签: c# coded-ui-tests


【解决方案1】:

艾伦,

您可能需要确保表格的标题行与其余行的格式相同。

行索引从 0 开始是正确的。

您可能想尝试创建调试方法。请记住,单元格是行的子级。将表格作为 ui 父对象传入并遍历每一行,然后遍历每个单元格并查看调试器向您显示的这些对象(包括它们的类型)的值。

我怀疑这与标题结构有关,或者元素具有与 HtmlCell 不同的对象类型

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多