【问题标题】:Webdriver - issues with fluent wait and IEWebdriver - 流畅等待和 IE 的问题
【发布时间】: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


    【解决方案1】:

    我发现 IE10 的最佳解决方案是等待页面加载。我之前一直在等待一个元素出现在页面上,但有时即使显示了 IE 也找不到该元素。下面是我正在使用的等待方法,它一直适用于所有版本的IE

    public boolean waitForPageLoaded(RCLocationExecutor driver) throws Exception {
                String fluentWaitTimeout = customParameters.get(CustomParameterNames.FLUENT_WAIT_TIMEOUT);
                log.info("INFO: setting the fluent wait timeout at: "+fluentWaitTimeout);
                    Wait<RCLocationExecutor> wait = new FluentWait<RCLocationExecutor>(driver)
                            .withTimeout(Long.valueOf(fluentWaitTimeout), TimeUnit.SECONDS)
                            .pollingEvery(1, TimeUnit.SECONDS)
                            .ignoring(ElementNotFoundException.class);
    
                   return wait.until(new Function<RCLocationExecutor, Boolean>(){
    
                            public Boolean apply(RCLocationExecutor driver){                                
                                return  driver.executeScript("return document.readyState").equals("complete");
                            }});    
        } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多