在5页中检查500个标题,并检查每个标题的标题:请让我知道更正
WebElement value = driver.findElement(By.id("numberOfResults"));
Select selectElement = new Select(value);
selectElement.selectByValue("100");
List<WebElement> PostTitles = driver.findElements(By.className("hlFld-Title"));
for (WebElement eachTitle : PostTitles)
{
System.out.println(eachTitle.getText());
// String Titles = eachTitle.getText();
int Size = PostTitles.size();
for (int i = 0; i < eachTitle; i++)
{
driver.findElement(By.linkText(eachTitle.getText())).click();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.findElement(By.linkText("HEADING")).click();
System.out.println(driver.getCurrentUrl());
driver.navigate().back();
driver.navigate().back();
}
}
很难说你的场景是什么,但我认为这会奏效。
几个修正:
- 您只需要设置一次
.implicitlyWait()
,它适用于WebDriver
的寿命 - 我认为你的嵌套循环是问题所在。你已经在循环浏览标题了。。。只需使用CCD_ 3
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); // this only needs to be set once
WebElement value = driver.findElement(By.id("numberOfResults"));
Select selectElement = new Select(value);
selectElement.selectByValue("100");
List<WebElement> PostTitles = driver.findElements(By.className("hlFld-Title"));
for (WebElement eachTitle : PostTitles)
{
String title = eachTitle.getText();
System.out.println(title);
driver.findElement(By.linkText(title)).click();
driver.findElement(By.linkText("HEADING")).click();
System.out.println(driver.getCurrentUrl());
driver.navigate().back();
driver.navigate().back();
}
for (int j = 0; j < 6; j++)
{
WebElement value = driver.findElement(By.id("numberOfResults"));
Select selectElement = new Select(value);
selectElement.selectByValue("100");
List<WebElement> postTitles = driver.findElements(By.className("hlFld-Title"));
for(int i = 0; i < postTitles.size(); i++) {
system.out.println(postTitles.get(i).getText());
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.findElement(By.linkText(postTitles.get(i).getText())).click();
driver.findElement(By.linkText("HEADING")).click();
System.out.println(driver.getCurrentUrl());
driver.navigate().back();
driver.navigate().back();
}
实现此逻辑,成功执行,无错误
List<WebElement> linkElements=driver.findElements(By.xpath("************"));
String[] linkTitles = new String[linkElements.size()];
int i = 0;
//extract the link texts of each link element
for (WebElement e : linkElements)
{
linkTitles[i] = e.getText();
i++;
}
//Test each link
for (String t : linkTitles)
{
// Titles Click
driver.findElement(By.linkText(t)).click();
System.out.println("n"+ driver.getTitle());
Thread.sleep(7000);
driver.findElement(By.linkText("Heading Notes")).click();
System.out.println(driver.findElement(By.xpath("*****")).getText());
System.out.println(driver.getCurrentUrl());
driver.navigate().back();
driver.navigate().back();
Thread.sleep(7000);
}