2017-07-03 40 views
0

所以与硒3.4我以前的工作wait.until s不工作(被新方法取代)。我似乎无法得到新的方法工作。硒3.4如何使用改变wait.until

我使用

import com.google.common.base.Function; 

旧代码:

public boolean waitForURLToMatch(String expectedURL, int waitTime){ 
    WebDriverWait wait = new WebDriverWait(driver, waitTime); 
    wait.until(EcpectedConditions.urlMatches(expectedURL)); 
} 

新代码:

public boolean waitForURLToMatch(String expectedURL, int waitTime){ 
    WebDriverWait wait = new WebDriverWait(driver, waitTime); 
    wait.until(new Function<WebDriver, boolean>){ 

     @Override 
     public boolean apply(WebDriver driver) { 
      return driver.getCurrentUrl().equals(expectedURL); 
     } 
    } 
} 

新的代码在Eclipse中的错误: Syntax error on tokens, InterfaceHeader expected instead

关于我出错的地方有什么想法?

+0

['urlMatches']](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html#urlMatches-java.lang.String-)将检查正则表达式,使用'urlToBe'或'urlContains'。此外,如果你没有使用任何明确的番石榴函数库的功能,那么就没有必要更新那个了。那里提到的错误已经在最新版本中修复 – Madhan

+0

@Madhan感谢您的回复,我将如何使用urlToBe或urlContains,直到方法已被更改,谓词已被删除,现在只有直到(Function <?super WebDriver,V> isTrue)。 我不确定我提到过的任何错误吗? – AutomationTester

+0

在'wait.until()'中使用'ExpectedConditions'。 – Madhan

回答

1

因此,经过大量的搜索后,我终于发现问题只是语法。

这工作:

public boolean waitForURLToMatch(String expectedURL, int waitTime){ 
    Wait<WebDriver> wait = new WebDriverWait(driver, waitTime); 
    Function<WebDriver, Boolean> function = new Function<WebDriver, Boolean>() { 
     public Boolean apply(WebDriver driver) { 
      String currentURL = driver.getCurrentUrl(); 
      if(currentURL.equals(expectedURL)) 
      { 
       truefalse = true; 
       return truefalse; 
      } 
      truefalse = false; 
      return truefalse; 
     } 
    }; 
    try{ 
     wait.until(function); 
    } catch (TimeoutException e){ 
    } 
    return truefalse; 
} 

编辑:好了,所以看起来这只是一个类路径冲突和所有现在的作品,类路径冲突连同硒除去过时的,直到(谓语)混淆的问题。