我正在测试的网页上的下拉选项取决于为早期文本框和选择提供的值(例如,根据指定的货币和金额,产品的下拉列表将显示适当的值。没有值,提供下拉列表是空白的。)。
现在,虽然我提供了货币和金额的值,但产品下拉列表仍为空白。它不会根据提供的早期数据获取过滤后的值。我正在使用Selenium服务器(2.24.1)并使用TestNG在Eclipse中用Java编写脚本并在IE8上进行测试。
检查时,下拉列表与其他下拉列表没有区别,只有其选项会根据页面上其他元素的值而更改。 Web应用程序是用Java(Wicket framework)开发的。
Selenium代码:
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);
答案 0 :(得分:0)
我不会尝试重现这个问题(如果你能指出一个有类似行为的公开可见的网站,我可能会测试它),所以我只是在这里猜测:
由于Selenium RC是用纯Javascript编写的,并且“仅”在从下拉列表中选择值时触发change
事件,Wicket可能正在等待其他内容或依赖于完全不同的机制。
你可以尝试的事情:
Thread.sleep()
(虽然我几乎可以肯定它甚至可以在这里摆脱,大多数情况下)。这个解决方案是最痛苦的,但几乎可以保证工作正常,因为WebDriver的行为就像一个真实的用户。input
元素上调用selenium.fireEvent()
。 Useful events可能是focus
,blur
,甚至可能是click
。selenium.keyPressNative(String.valueOf(KeyEvent.VK_ENTER))
(本地按 Enter )。如果在此之前没有关注更改的下拉菜单,您可能需要事先focus()
。focus()
下拉元素,而不是使用select()
,然后通过{选择其中一个选项重复{3}} 向下箭头,然后输入。