使用SeleniumWebDriver和Java滚动Webelement
请帮助我处理StaleElementReferenceException。 我正在尝试使用action类滚动一个webelement。 代码如下:使用SeleniumWebDriver和Java滚动Webelement,java,selenium-webdriver,testng,Java,Selenium Webdriver,Testng,请帮助我处理StaleElementReferenceException。 我正在尝试使用action类滚动一个webelement。 代码如下: public void newsSearch() throws StaleElementReferenceException{ driver.get("https://pi.persistent.co.in"); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECON
public void newsSearch() throws StaleElementReferenceException{
driver.get("https://pi.persistent.co.in");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.id("ui-accordion-1-header-2")).click();
Actions act = new Actions(driver);
int numOfPixels = 2;
WebElement draggablePartOfScrollbar = driver.findElement(By.xpath("//*[@id='ui-accordion-1-panel-2']/div/div[2]/div[2]/div"));
for (int i = 2; i < 50; i = i + numOfPixels) {
act.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0, numOfPixels).release().perform();
System.out.println("Inside for loop");
}
System.out.println("After for loop");
driver.findElement(By.xpath("//*[@id='ulNotification']/li[5]/h3")).click();
driver.close();
}
在第50行,即
act.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0, numOfPixels).release().perform();
我试过使用try-catch,但仍然不起作用。
提前感谢您。在迭代次数处的for循环条件中,您是否遇到异常 因为一旦元素被移动或拖动,页面DOM将更新,并且该元素将不再可用于再次移动。这就是您获得
StaleElementReferenceException
的原因。请参见此说明
移动元素的代码如下所示:
act.moveToElement(ScrollBar的可拖动部分)。clickAndHold().moveByOffset(0,numOfPixels)。release().build().perform()代码>谢谢您的回复,瓦拉帕萨德。我尝试使用上面的代码行,再次得到相同的代码行相同的异常。如果您知道任何其他选项,请帮助。欢迎Vrushali。但是你读过我上面关于StaleElementReferenceException
的陈述了吗。尝试将查找元素代码移动到for循环中WebElement draggablePartOfScrollbar=driver.findElement(By.xpath(“/*[@id='ui-accordion-1-panel-2']]/div/div[2]/div[2]/div”)代码>哦,哇。。。!!!完成了。。。工作得这么漂亮。。。。非常感谢你,瓦拉帕萨德…:D
act.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0, numOfPixels).release().perform();