0

我对 Selenium Webdriver 很陌生,所以请原谅我使用的所有 d 'noob' 术语。

我在页面上有一个动态表格,表格中有 4 列。其中,只能编辑第一列名称。该表如下所示:

(对不起,堆栈溢出不会让我发布图片)

现在使用 Webdriver,我需要找到“group102”并验证“group102”对应的级别和卡片数量(基本上是两列其余部分的文本)。这里要注意的关键点是,这个群体本质上是动态的。现在,它坐在第 3 排,但明天,它可能在第 1 排或第 10 排。

我正在使用 Visual Studio (C#) 和 Selenium webdriver。请让我知道我该如何进步

编辑:HTML代码:

<div id="formbland-1013" class="x-panel x-panel-default x-form-bland x-form-base" style="height: 9588px;">
 <div id="formbland-1013-body" class="x-panel-body x-panel-body-default x-panel-body-default" style="left: 0px; top: 0px; width: 680px; height: 9588px;">
  <span id="formbland-1013-outerCt" style="display: table; width: 100%; table-layout: fixed;">
   <div id="formbland-1013-innerCt" style="display:table-cell;height:100%;vertical-align:top;">
    <div id="ext-comp-1026" class="x-panel x-panel-default x-form-bland x-form-base" style="width: 680px; height: 47px;">
     <div id="ext-comp-1036" class="x-panel x-panel-default x-form-bland x-form-base" style="width: 680px; height: 9541px;">
      <div id="ext-comp-1036-body" class="x-panel-body x-panel-body-default x-panel-body-default" style="left: 0px; top: 0px; width: 680px; height: 9541px;">
       <span id="ext-comp-1036-outerCt" style="display: table; width: 100%; table-layout: fixed;">
        <div id="ext-comp-1036-innerCt" style="display:table-cell;height:100%;vertical-align:top;">

我正在尝试的代码:

ReadOnlyCollection<IWebElement> select = WebDriver.FindElements(By.XPath("//td[contains(text(),'group102')]"));
if ("group102e".Equals(select.ToString()))
{
    throw new SystemException("Group matches according to the Access");
}
else
{
    throw new SystemException("Group does not matches according to the Access");
}
4

1 回答 1

1

我无法提供确切的代码,因为我不知道表格的 HTML。但这里是理论上的代码。

IWebElement首先通过文本获取输入,然后转到祖先 td 的兄弟姐妹(即该行中接下来的两列单元格),然后获取元素的文本。

IWebElement inputGroup = WebDriver.FindElement(By.CssSelector("tbody input[value='group101']"));
IWebElement level = inputGroup.FindElement(By.XPath("(.//ancestor::td/following-sibling::td)[1]"));
string levelA = level.Text;

我对您的代码的问题:

  1. "group102e".Equals(select.ToString())没有意义,因为您的selectisReadOnlyCollection<IWebElement>是 IWebElements 的列表,ToString不会给您带来任何有用的东西?

  2. var location = WebDriver.FindElement(By.CssSelector("tbody input[value='Practice Wide Group 2']")).Location.ToString();,你想在这里做什么?元素的位置(类型为System.Drawing.Point)?

于 2013-05-30T22:40:59.113 回答