1

我正在测试的网页上的下拉选项取决于为早期文本框和选择提供的值(例如,根据指定的货币和金额,产品的下拉列表将显示适当的值。如果没有值,则提供的下拉列表为空白。 )。

现在,虽然我已经提供了货币和金额的值,但产品下拉菜单仍然是空白的。它不是根据提供的早期数据获取过滤后的值。我正在使用 Selenium 服务器(2.24.1)并使用 TestNG 在 Eclipse 中用 Java 编写脚本并在 IE8 上进行测试。

检查时,下拉菜单与其他下拉菜单没有什么不同,只是它的选项会根据页面上其他元素的值而变化。Web 应用程序是用 Java(Wicket 框架)开发的。

硒代码:

selenium.select(ownerBranch, "label=4521 - Branch one");

selenium.select(currency, "label=SEK - Swedish kronor");
Thread.sleep(sleep);

selenium.type(amountSantioned,"100000");
Thread.sleep(sleep);

selenium.click(chooseLoanTermBymatDate);
Thread.sleep(sleep);

timeNow=Calendar.getInstance();
timeNow.add(Calendar.DATE,+360);selenium.type(maturityDate,dateformat.format(timeNow.getTime()));
Thread.sleep(sleep);

selenium.type(amountSantioned,"100000");
Thread.sleep(sleep);

selenium.select(serviceDelChannel, "label=BackOffice");
Thread.sleep(sleep);
selenium.select(product, "label=");
Thread.sleep(sleep*2);
selenium.select(product,"label=LN7292 - Consumer loan for Year2026");
Thread.sleep(sleep);
4

1 回答 1

0

我不会尝试重现该问题(如果您可以将我指向具有类似行为的公开可见网站,我可能会对其进行测试),所以我只是在这里猜测:

由于 Selenium RC 是用纯 Javascript 编写的,并且“仅”change在从下拉列表中选择值时触发事件,因此 Wicket 可能正在等待其他东西或依赖于完全不同的机制。

你可以尝试的事情:

  • 使用 Selenium WebDriver。Selenium RC 已经被弃用了一年多,因为它有严重的技术限制(你可能刚刚碰到一个),现在 WebDriver 解决了这些限制。此外,您永远不必Thread.sleep()再次使用(尽管我几乎可以肯定即使在这里也可以摆脱它,主要是)。这个解决方案是最痛苦的,但几乎可以保证运行良好,因为 WebDriver 的行为就像一个真实的用户。
  • 调用您正在与之交互的selenium.fireEvent()所有元素。有用的事件可能是, , 甚至可能在它们之间。inputfocusblurclick
  • 在您每次更改下拉列表后调用selenium.keyPressNative(String.valueOf(KeyEvent.VK_ENTER))(本机按下)。Enter如果更改后的下拉菜单在此之前没有聚焦,您可能需要focus()事先进行设置。
  • 尝试尽可能接近地模拟用户行为而不是使用 JS 方法的痛苦方式:而不是使用select(),尝试下拉元素,然后通过反复focus()选择其中一个选项,然后. Down arrowEnter
于 2012-07-05T12:04:40.803 回答