在下面的代码中,我传递了url
和tag
。
tag
用于标识页面中的div /部分。我试图将所有url
置于一个部分下,并与传递的url
进行比较并尝试匹配。
这里的问题是当我在调试模式下运行此代码时,我能够获取一个网址列表并在列表中找到匹配的url
,但是当我运行下面的代码时assert
语句始终无法在列表中找到url
。我通过引入web元素等待以及其他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 :(得分:0)
对URL也使用显式等待
List<WebElement> urlList = wait2.until(ExpectedConditions.presenceOfAllElementsLocatedBy(mySelector));