1

当有人在文本框中键入整数时,我有一个网页从我的数据库中提取一些数据。数据最终出现在一些文本输入控件中。直截了当。触发 ajax 的硒是:

<tr>
    <td>fireEvent</td>
    <td>ctl00_ContentPlaceHolder1_Wiz1_Control1_TextBox1</td>
    <td>blur</td>
</tr>

在 blur 事件之后,页面上有 6 个输入,其中现在包含文本。我想等待文本出现在输入中并断言它们存在。什么是有效的方法来做到这一点?

我试过了:

  • waitForExpression使用 jquery 调用($('...').val() != ''但由于 jquery,即使页面上加载了 jquery,这也值得怀疑);也试过xpath,但也没有用
  • waitForText(定位器,模式),这似乎是最明显的一个,但它真的不起作用,我怀疑因为字段是输入

我是否需要一种不同的方法,因为我正在查询的元素是input控件?

4

2 回答 2

1

解决方案(由 Selenium google 组的用户提供)是使用waitForValue而不是 waitForText。一方面,这本来可以更容易弄清楚。另一方面,我可以更多地了解我正在测试的 DOM 对象。

<tr>
  <td>waitForValue</td>
  <td>ctl00_ContentPlaceHolder1_TheTextBox</td>
  <td>regexp:.+</td>
</tr>

>>> 谷歌群组链接

于 2011-01-19T17:58:59.447 回答
0

我会做这样的事情;这将等待所有 TextBox 中的一个值长达 60 秒。当所有文本框中都有一个值时,您检查它们等并跳出循环。否则它将在 60 秒后失败。

for (int second = 0;; second++) {
  if (second >= 60) fail("timeout");
  try { 
    if (selenium.getValue("TextBox1") != "" && selenium.getValue("TextBox2") !="" )) 
      { Your Logic here..
         break;
       } 
   } catch (Exception e) {}
  Thread.sleep(1000);
}
于 2011-01-19T02:26:46.470 回答