如何滚动直到在弹出窗口中看到对象?

时间:2019-05-20 12:29:26

标签: java selenium selenium-webdriver

如何滚动直到在弹出窗口中看到对象?

带有Java的硒3.141

  1. 从基本窗口中打开一个弹出窗口
  2. 切换到弹出窗口
  3. 现在向下滚动,直到在弹出窗口中看到某些对象(弹出窗口中提供了窗口滚动器),然后单击

预期结果:应该滚动直到对象可见,然后单击

实际结果:切换到弹出窗口,但无法滚动

WebElement Element =  driver.findElement(By.xpath("//*[contains(@search-item-predicate-value,'test_object')]"));
jse.executeScript("arguments[0].scrollIntoView();", Element);

jse.executeScript("arguments[0].scrollTop = arguments[1];",driver.findElement(By.className("wux-scroller")), 500); //scrollTop works but scrollIntoView fails```

2 个答案:

答案 0 :(得分:0)

有时直到滚动完成才加载该项目。 (在滚动操作时动态加载内容...)查看源代码,以确认滚动之前该项目是否确实存在。如果不是,则需要先按像素滚动窗口。

答案 1 :(得分:0)

在这里,您说过要切换到弹出窗口。即它不是驱动程序滚动条。它是应用程序级别的滚动条。因此,当您使用javascriptexecutor时,它不会滚动您的弹出窗口。

要解决此问题,请执行以下步骤: 1)切换到弹出窗口 2)单击任何元素以激活DOM 3)也为您的DOM写一个xpath 4)使用以下代码根据您的要求滚动:

public static boolean scrollWebTable(String dom, String toSearch, String direction) {
        driver.findElement(By.xpath(dom)).click();
        int flag = 0;
        int count = 0;
        do {
            try {
                driver.findElement(By.xpath(dom)).click();
                WebElement ele = Shared.driver.findElement(By.xpath(toSearch));
                flag = 1;
            } catch (Throwable e) {
                switch (direction.toLowerCase()) {
                case "right":
                    driver.findElement(By.xpath(dom)).sendKeys(Keys.RIGHT);
                    break;
                case "left":
                    driver.findElement(By.xpath(dom)).sendKeys(Keys.LEFT);
                    break;
                case "down":
                default:
                    driver.findElement(By.xpath(dom)).sendKeys(Keys.PAGE_DOWN);
                    break;
                case "up":
                    driver.findElement(By.xpath(dom)).sendKeys(Keys.PAGE_UP);
                    break;
                }
            }
        } while ((flag == 0) || ((++count) == 250));
        return (flag == 1);
    }

通过传递DOM和elementToSearch xpath以及从哪个方向向上或向下或向右或向左滚动来从POM类中调用此方法。 这里,将执行while循环(即,它将滚动)页面,直到显示您期望的元素。

注意:仅当使用键盘箭头键滚动弹出窗口时,此代码才有效。