如何滚动直到在弹出窗口中看到对象?
带有Java的硒3.141
预期结果:应该滚动直到对象可见,然后单击
实际结果:切换到弹出窗口,但无法滚动
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```
答案 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循环(即,它将滚动)页面,直到显示您期望的元素。
注意:仅当使用键盘箭头键滚动弹出窗口时,此代码才有效。