0

enter image description hereI am working on Firstcry .com website for automation. After searched for Shoes int he search box, I need to scroll down to the bottom of the page to click "View All products" link. BUt scrolling is not happening.. what should be done... attached my code and screenshot for reference..

[public void f(String s) {
        String ExpecTitle = "Kids Footwear - Buy Baby Booties, Boys Shoes, Girls Sandals Online India";
        Actions builder = new Actions(Driver);
        Driver.get("https://www.firstcry.com/");
        String Viewall = "/html/body/div\[6\]/div\[2\]/div\[2\]/div\[2\]/div\[8\]/div\[2\]/span/a";
        String MainTitle = Driver.getTitle();
         System.out.println("Main title is " + MainTitle);
        
        WebElement SearchBox =  Driver.findElement(By.id("search_box"));
        SearchBox.clear();
        WebElement SearchBox2 =  Driver.findElement(By.id("search_box"));
        SearchBox2.sendKeys(s);
      //    SearchBox.sendKeys(Keys.ENTER);
        //wait.until(ExpectedConditions.stalenessOf(Driver.findElement(By.cssSelector(".search-button"))));
        Driver.findElement(By.cssSelector(".search-button")).click();
        
        
        String ActTitle = Driver.getTitle();
         System.out.println("The page title is " + ActTitle);
         Driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
         if(ActTitle.contains("Kids Footwear")){
                      
             System.out.println("Inside the if condition");  
             js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
             WebElement viewALL = Driver.findElement(By.xpath(Viewall));
            // js.executeScript("arguments\[0\].scrollIntoView();", viewALL);
            
             Driver.findElement(By.xpath(Viewall)).click();
             
             System.out.println("View");  
             // WebElement viewAll = Driver.findElement(By.xpath("/html/body/div\[6\]/div\[2\]/div\[2\]/div\[2\]/div\[8\]/div\[2\]/span/a"));
             // js.executeScript("arguments\[0\].scrollIntoView(true);", viewAll);
             // wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a\[contains(text(),'View All Products')\]")));
             // viewAll.click();
          }
          
              WebElement element = Driver.findElement(By.cssSelector(".sort-select-content"));
              element.click();
              builder.moveToElement(element).perform();
            
            {
              WebElement elem = Driver.findElement(By.linkText("Price"));
           elem.click();
            //  builder.moveToElement(elem).perform();
            }
            //Driver.findElement(By.linkText("Price")).click();
  }][1]
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
JeyanthiRanjit
  • 161
  • 1
  • 12

3 Answers3

1

After searching for Shoes in the search box and selecting the first suggestion, to scroll down to the bottom of the page to click on the element with text as View All Products you need to induce WebDriverWait for the elementToBeClickable() and you can use the following based Locator Strategies:

driver.get("https://www.firstcry.com/");
WebElement searchBox = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='search_box']")));
searchBox.clear();
searchBox.sendKeys("Shoes");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='searchlist']/ul/li/span"))).click();
((JavascriptExecutor)driver).executeScript("return arguments[0].scrollIntoView(true);", new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[text()='View All Products']"))));
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[text()='View All Products']"))).click();
Swaroop Humane
  • 1,770
  • 1
  • 7
  • 17
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
0

// following code to scroll until element is visible and click that element

    JavascriptExecutor js = (JavascriptExecutor) driver;


    WebElement viewALL = Driver.findElement(By.xpath(Viewall));

            
    js.executeScript("arguments[0].scrollIntoView();", viewALL);
     viewALL.click();
}

}

Justin Lambert
  • 940
  • 1
  • 7
  • 13
0

Below code worked for me:

    WebDriver Driver = new ChromeDriver();
    Driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    Driver.manage().window().maximize();
    String url = "https://www.firstcry.com/";
    Driver.get(url);
    WebElement searchbox=Driver.findElement(By.id("search_box"));
    searchbox.clear();
    searchbox.sendKeys("shoes");
    Driver.findElement(By.xpath("/html/body/div[1]/div[5]/div/div[2]/form/span")).click();
    WebElement Element=Driver.findElement(By.partialLinkText("View All Products"));
    JavascriptExecutor js = (JavascriptExecutor) Driver;
    js.executeScript("window.scrollBy(0,document.body.scrollHeight)");
    Element.click();
arpita biswas
  • 144
  • 1
  • 6