Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SeleniumWebDriver和Java滚动Webelement_Java_Selenium Webdriver_Testng - Fatal编程技术网

使用SeleniumWebDriver和Java滚动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

请帮助我处理StaleElementReferenceException。 我正在尝试使用action类滚动一个webelement。 代码如下:

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();