首页 > 解决方案 > Java - Selenium - 超出页面视图的 Div 元素即使在滚动到视图后也不会加载

问题描述

我们一直在为此苦苦挣扎。我们有一个带有 div 元素的页面。

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

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

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

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

有什么方法可以让我们在不滚动的情况下从该表中获取所有元素?我的理解是,即使这些元素不可见,它们仍然是页面的一部分,因为它们在滚动后变得可见。

我们尝试滚动到元素视图,但得到 Nosuchelementfound 异常。

我们尝试使用键盘向下箭头键使向下的项目可见,但是当行数相当多时,表格屏幕变为白色,我们再次得到相同的 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) {

                            }```


标签: javaselenium-chromedriver

解决方案


推荐阅读