需要在5页中检查500个标题(每页包含100个标题),每个标题都必须单击并检查该页面标题上的特定标题

  • 本文关键字:标题 单击 100个 5页 500个 包含 java selenium
  • 更新时间 :
  • 英文 :


在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();
    }
}

很难说你的场景是什么,但我认为这会奏效。

几个修正:

  1. 您只需要设置一次.implicitlyWait(),它适用于WebDriver的寿命
  2. 我认为你的嵌套循环是问题所在。你已经在循环浏览标题了。。。只需使用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);
}

最新更新