我使用List Element和For loop Conditions创建了以下脚本。 请查看我的方案
情境:
打开主页>点击下拉菜单>打开下拉列表。
点击第一个选项>重定向到特定屏幕并验证标题。
返回同一个屏幕,同样的情景将会跟随4次。
当我在Eclipse中执行我的下面脚本时,我发现了错误。 在我的下面编码中,第一次点击是有效的,但是第二次点击在我的下拉列表中不起作用。
@Test
public void toVerifyHelpLink() throws IOException, InterruptedException{
File src = new File("Object_Repo.properties");
FileInputStream fis = new FileInputStream(src);
pro = new Properties();
pro.load(fis);
Thread.sleep(2000);
WebElement linksdiv = driver.findElement(By.xpath(pro.getProperty("new_ul")));
List<WebElement> Links = linksdiv.findElements(By.tagName("a"));
System.out.println(Links.size());
for(int i=0; i<= Links.size()-1; i++)
{
driver.findElement(By.xpath(pro.getProperty("customerservice"))).click();
String subCategory = Links.get(i).getText();
System.out.println(subCategory);
Links.get(i).click();
if(!subCategory.equalsIgnoreCase("404")){
System.out.println("Title displaying as exepected");
}
driver.navigate().back();
linksdiv = driver.findElement(By.xpath(pro.getProperty("new_ul")));
Thread.sleep(2000);
}
}
这是HTML结构如下
<div class="customer-service effect">
<a href="">customer service</a>
<ul>
<li><a href="">Help</a></li>
<li><a href="">FAQs</a></li>
<li><a href="">Contact Us</a></li>
<li><a href="">Shipping and Returns</a></li>
</ul>
</div>
答案 0 :(得分:0)
尝试在for
循环中再添加一行:
driver.navigate().back();
linksdiv = driver.findElement(By.xpath(pro.getProperty("new_ul")));
Links = linksdiv.findElements(By.tagName("a")); // add this line to find all "a" again
答案 1 :(得分:0)
陈旧元素异常 - 告诉您页面已更改,但您的网页元素实例未更改。这意味着当您的页面的HTML代码发生变化时,您应该再次找到该元素,因为html已更改。这就是硒的作用方式。
此外,我发现您的代码中存在典型错误,请查看: http://selenide.org/
不要使用线程睡眠: https://saucelabs.com/blog/how-to-avoid-threadsleep-in-test-automation