页面视图之外的Java-Selenium-Div元素即使在滚动到视图之后也不会加载

页面视图之外的Java-Selenium-Div元素即使在滚动到视图之后也不会加载,java,selenium-chromedriver,Java,Selenium Chromedriver,我们一直在努力解决这个问题。我们有一个包含div元素的页面 元素的Xpath,例如。 tr[2]/td[4],tr[7]/td[4],tr[12]/td[4],tr[17]/td[4],tr[22]/td[4] 现在的问题是,当我们为上面的元素运行一个循环时,它只显示第四次迭代之前的元素。如果有更多的项目,我们将无法获取这些元素,因为它们只有在通过手动滚动进入视图后才可见 编程滚动将视图显示为纯白色,上面没有任何元素 因此,基本上,可见性下面的页面是空白的。当我们滚动时,元素会慢慢出现 有没有什

我们一直在努力解决这个问题。我们有一个包含div元素的页面

元素的Xpath,例如。 tr[2]/td[4],tr[7]/td[4],tr[12]/td[4],tr[17]/td[4],tr[22]/td[4]

现在的问题是,当我们为上面的元素运行一个循环时,它只显示第四次迭代之前的元素。如果有更多的项目,我们将无法获取这些元素,因为它们只有在通过手动滚动进入视图后才可见

编程滚动将视图显示为纯白色,上面没有任何元素

因此,基本上,可见性下面的页面是空白的。当我们滚动时,元素会慢慢出现

有没有什么方法可以不用滚动就从表中获取所有元素?我的理解是,即使这些元素不可见,但它们在滚动后仍然是页面的一部分

我们试图滚动到元素的视图中,但得到了Nosuchelementfound异常

                            while (1<2) {
                                WebElement pkgtype = driver.findElement(By.xpath("//*[@id=\"sheet1\"]/tbody/tr[2]/td/div/div[1]/table/tbody/tr["+ cmtab +"]/td[6]"));
                                Thread.sleep(2000);
                                js.executeScript("arguments[0].scrollIntoView(true);", pkgtype);
                                Thread.sleep(2000);
                                String cmpk = pkgtype.getAttribute("innerHTML");

                                if(cmpk.equals(temppk)) {
                                    pkgtype.click();
                                    try {
                                    pkgtype.click();
                                    }
                                    catch(Exception e) {

                                    }
                                    driver.findElement(By.id("_editInput0")).sendKeys(mPkgType);


                                    driver.findElement(By.xpath("//*[@id=\"sheet1\"]/tbody/tr[2]/td/div/div[1]/table/tbody/tr["+ cmtab +"]/td[8]")).click();
                                    cmtab = cmtab + 5;
                                }

                            }

                            }
                            catch(Exception e) {

                            }```


我们尝试使用键盘上的向下箭头键使向下的项目可见,但当行的数量相当大时,表格屏幕将变为白色,我们再次得到相同的NoTouchElementFound异常

                            while (1<2) {
                                WebElement pkgtype = driver.findElement(By.xpath("//*[@id=\"sheet1\"]/tbody/tr[2]/td/div/div[1]/table/tbody/tr["+ cmtab +"]/td[6]"));
                                Thread.sleep(2000);
                                js.executeScript("arguments[0].scrollIntoView(true);", pkgtype);
                                Thread.sleep(2000);
                                String cmpk = pkgtype.getAttribute("innerHTML");

                                if(cmpk.equals(temppk)) {
                                    pkgtype.click();
                                    try {
                                    pkgtype.click();
                                    }
                                    catch(Exception e) {

                                    }
                                    driver.findElement(By.id("_editInput0")).sendKeys(mPkgType);


                                    driver.findElement(By.xpath("//*[@id=\"sheet1\"]/tbody/tr[2]/td/div/div[1]/table/tbody/tr["+ cmtab +"]/td[8]")).click();
                                    cmtab = cmtab + 5;
                                }

                            }

                            }
                            catch(Exception e) {

                            }```



while(1听起来页面在滚动时正在加载数据。获取完整数据的唯一方法是不断滚动,直到元素加载到页面上。如果您知道元素将在页面上,则可以将元素检查包装在循环中,在循环中继续滚动,直到找到元素为止。如果页面的元素数量有限s、 您还可以滚动直到数据的大小停止增加。Hello@ejdebruin,如果您能给出一些示例代码来显示滚动直到找到元素,那就太好了。听起来页面在滚动时正在加载数据。获取完整数据的唯一方法是不断滚动,直到元素加载到页面上。如果您确定现在,您的元素将在那里,您可以将元素的检查包装在一个循环中,继续滚动直到找到它。如果页面的元素数量有限,您也可以滚动直到数据大小停止增加。Hello@ejdebruin,如果您能给出一些显示滚动直到元素的示例代码,那就太好了t被发现。