Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Selenium Java中滚动到元素失败_Java_Selenium_Selenium Webdriver_Xpath_Webdriverwait - Fatal编程技术网

在Selenium Java中滚动到元素失败

在Selenium Java中滚动到元素失败,java,selenium,selenium-webdriver,xpath,webdriverwait,Java,Selenium,Selenium Webdriver,Xpath,Webdriverwait,我正在Firstcry.com网站上为自动化工作。在搜索框中搜索鞋子后,我需要向下滚动到页面底部,单击“查看所有产品”链接。但是滚动并没有发生。。应该怎么做。。。附上我的代码和截图以供参考 [public void f(String s) { String ExpecTitle = "Kids Footwear - Buy Baby Booties, Boys Shoes, Girls Sandals Online India"; Action

我正在Firstcry.com网站上为自动化工作。在搜索框中搜索鞋子后,我需要向下滚动到页面底部,单击“查看所有产品”链接。但是滚动并没有发生。。应该怎么做。。。附上我的代码和截图以供参考

[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]

在搜索框中搜索鞋子并选择第一个建议后,要向下滚动到页面底部,单击文本为的元素查看所有产品,您需要对
元素进行归纳,以使其可折叠()
,您可以使用以下选项:


//按照下面的代码滚动,直到元素可见,然后单击该元素

    JavascriptExecutor js = (JavascriptExecutor) driver;


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

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

}

以下代码适用于我:

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

谢谢。它可以工作,但我不能添加额外的点击来进行排序。。它是基于指令的执行…@JeyanthiRanjit,这似乎是一个完全不同的用例。你能根据你的新要求提出一个新问题吗?谢谢你,这很有效。。我刚刚删除了第9行的额外点击…抱歉,但由于某些原因,它没有以这种方式滚动到元素…我尝试过,但感谢您花费的时间
    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();