【发布时间】:2014-05-23 14:29:45
【问题描述】:
我正在使用 Java 和 webdriver 来自动化测试。此测试适用于 2 个下拉菜单,并具有向下钻取功能。因此,第一个下拉列表包含一个选项列表,第二个下拉列表将根据用户在第一个中选择的内容进行不同的填充。我正在尝试测试在第一个下拉列表中选择所有不同的选项,并验证在第二个下拉列表中是否提供了正确的选项。例如,第一个下拉菜单可能有选项 A 和 B。如果我选择 A,第二个下拉菜单将有选项 1、2 和 3。如果我选择 B,第二个下拉菜单将有选项 8、9 和 10。
我在更改第一个下拉列表中的值时遇到了问题。当我选择 A 时,webdriver 会在加载之前尝试检查 1、2 和 3 在第二个下拉列表中是否可用。这导致我的测试失败。
为了解决这个问题,我添加了一个流畅的等待第二个下拉菜单。因此,如果我在第一个下拉列表中选择 A 或 B,它会等到第二个下拉列表加载后再检查可用选项。该解决方案非常适合在 chrome 和 firefox 中进行测试。但是,在使用 IE10 时它没有帮助。当我在 IE10 中运行测试时,它仍在尝试在加载第二个下拉列表之前检查它们的值,这导致我的测试失败。
有没有人在使用 IE 时遇到流畅等待的问题。我能够让它在 IE 中工作的唯一方法是添加一条睡眠线。如果我使用 sleep(2000) 之类的东西,它似乎可以工作。但是,如果网页运行缓慢并且加载时间更长,这仍然可能导致我的测试失败。
这是我用于流畅等待的代码。我正在从第一个下拉列表中选择一个值。然后我使用 smartSleep 等待第二个下拉列表,然后检查该下拉列表中的值。如果需要更多信息来帮助理解我遇到的问题,请告诉我。
public void smartSleep(String selector){
//log.info("INFO: waiting for the selector to appear");
fluentWaitPresent(selector);
log.info("INFO: Smart Sleep waited for: " +selector);
}
【问题讨论】:
标签: java internet-explorer selenium selenium-webdriver