2016-09-20 5 views
0

以下のコードでは、urltagを渡しています。コードを実行しているがデバッグモードで渡しているときに常にweb要素を見つけることができない

tagは、ページ内のdiv /セクションを識別するために使用されます。セクションの下にあるurlをすべて取得しようとしていて、渡されたurlと比較して一致するようにしています。私はデバッグモードでこのコードを実行すると

はここでの問題は、私は、URLのリストを取得し、リスト内の一致urlを見つけることができる午前私はassert文は常にurlを言って失敗の下のコードを実行したときには見られない、ありますリスト。 Web要素waitやその他のメソッドを導入することでこれを解決するために最善の努力をしました。sleepメソッド。何も働いていないようです。これを解決するために私を助けてもらえますか?

コード

public void validateEndpoints(String url, String tag){ 
    tag = tag.trim(); 
    if(tag.contains("/")) 
     tag = tag.replace("/", "_"); 

    WebElement resourceLink = driver.findElement(By.cssSelector("#resource_"+tag+"_"+" .heading a")); 
    WebDriverWait wait = new WebDriverWait(driver, 20); 
    wait.until(ExpectedConditions.elementToBeClickable(resourceLink)); 
    JavascriptExecutor executor = (JavascriptExecutor)driver; 
    executor.executeScript("arguments[0].click();", resourceLink); 

    By mySelector = By.cssSelector("#"+tag+"__endpoint_list .path a"); 
    WebDriverWait wait2 = new WebDriverWait(driver, 30); 
    wait2.until(ExpectedConditions.elementToBeClickable(mySelector)); 
    List<WebElement> urlList = driver.findElements(mySelector); 

    List<String> resourceName = new ArrayList<String>(); 

    for (WebElement e : urlList){ 
     resourceName.add(e.getText());   
    } 
    executor.executeScript("arguments[0].click();", resourceLink); 
    Assert.assertTrue(resourceName.contains(url), "End point "+ url +" not found in the resource " + tag + "...");  
} 

答えて

0

使用明示的なURLの待ち時間だけでなく

List<WebElement> urlList = wait2.until(ExpectedConditions.presenceOfAllElementsLocatedBy(mySelector)); 
+0

は、この質問を投稿する前にこのことを試みたが、運がありませんでした! –

関連する問題