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

Java 需要检查5页中的500个标题(每页包含100个标题),每个标题必须单击并检查该页标题上的特定标题,java,selenium,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("

检查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();
    }
}
WebElement value=driver.findElement(By.id(“numberOfResults”);
选择selectElement=新选择(值);
selectElement.selectByValue(“100”);
List PostTitles=driver.findElements(By.className(“hlFld Title”);
for(每个WebElement标题:PostTitles)
{
System.out.println(eachTitle.getText());
//String Titles=eachTitle.getText();
int Size=PostTitles.Size();
for(int i=0;i
很难说您的场景到底是什么,但我认为这是可行的

几处更正:

  • 只需设置一次
    .implicitlyWait()
    ,它将应用于
    WebDriver
    的生命周期
  • 我认为你的嵌套循环是问题所在。您已经在循环浏览标题。。。只需使用
    eachTitle
  • driver.manage().timeout().implicitlyWait(20,TimeUnit.SECONDS);//这只需要设置一次
    WebElement值=driver.findElement(By.id(“numberOfResults”);
    选择selectElement=新选择(值);
    selectElement.selectByValue(“100”);
    List PostTitles=driver.findElements(By.className(“hlFld Title”);
    for(每个WebElement标题:PostTitles)
    {
    字符串title=eachTitle.getText();
    系统输出打印项次(标题);
    driver.findElement(By.linkText(title)).click();
    driver.findElement(By.linkText(“标题”))。单击();
    System.out.println(driver.getCurrentUrl());
    driver.navigate().back();
    driver.navigate().back();
    }
    
    用于(int j=0;j<6;j++)
    {
    WebElement值=driver.findElement(By.id(“numberOfResults”);
    选择selectElement=新选择(值);
    selectElement.selectByValue(“100”);
    List postTitles=driver.findElements(By.className(“hlFld Title”);
    对于(int i=0;i
    实现了此逻辑,成功执行,没有错误

    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);
    }
    
    List linkElements=driver.findElements(By.xpath(“***********”);
    String[]linkTitles=新字符串[linkElements.size()];
    int i=0;
    //提取每个链接元素的链接文本
    for(WebElement e:linkElements)
    {
    linkTitles[i]=e.getText();
    i++;
    }
    //测试每个链接
    用于(字符串t:linkTitles)
    {
    //标题点击
    driver.findElement(By.linkText(t)).click();
    System.out.println(“\n”+driver.getTitle());
    睡眠(7000);
    driver.findElement(By.linkText(“标题注释”))。单击();
    System.out.println(driver.findElement(By.xpath(“****”)).getText();
    System.out.println(driver.getCurrentUrl());
    driver.navigate().back();
    driver.navigate().back();
    睡眠(7000);
    }
    
    全新,您必须编写Selenium测试?还有您的问题是什么?您可能需要阅读代码中的错误,并清楚地指出您不需要完整代码的内容。嗨,Chandra Shekar:只打印第一个标题,并且能够检查标题中的标题共享到页面的链接?修改后,我准备了这个标题.Friends请查看错误:线程“main”org.openqa.selenium.StaleElementReferenceException中的异常:缓存中未找到元素-可能页面在查找后已更改
    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);
    }