如何测试输入元素的文本?

时间:2011-01-17 19:15:20

标签: selenium selenium-ide

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

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

在模糊事件之后,页面上有6个输入,现在有文本。我想在输入中等待文本出现并声明它们存在。有效的方法是什么?

我试过了:

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

我需要一个不同的方法,因为我要查询的元素是input控件吗?

2 个答案:

答案 0 :(得分:1)

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

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

>>> Google groups link

答案 1 :(得分:0)

我会这样做;这将等待所有TextBox中的值最多60秒..当所有TextBox中都有一个值时,你检查它们等,然后跳出循环。否则它会在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);
}