Java-selenium上的StaleElementReferenceException错误

时间:2015-08-26 12:07:20

标签: java selenium webdriver

当我运行我的代码从flipkart.com选择“立即购买”时,我得到StaleElementReferenceException。这就是我所拥有的,但它不适合我。

public void SelectItemfromPage(){

    WebDriver wd = new FirefoxDriver();

    wd.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    wd.get("http://www.flipkart.com");
    WebElement element = wd.findElement(By.xpath(".//*[@id='fk-top-search-box']"));
    element.sendKeys("moto g");
    element.submit();


    element.findElement(By.xpath(".//*[@id='products']/div/div[1]/div[1]/div/div[1]/a[1]/img")).click();
    element.findElement(By.xpath(".//*[@id='fk-mainbody-id']/div/div[7]/div/div[3]/div/div/div[6]/div/div[3]/div[1]/div/div[2]/div/div[2]/form/input[9]")).click();
}

1 个答案:

答案 0 :(得分:2)

你的方法都错了。 您正在保存WebElement并重新使用它,这不是可行的方法。 将WebElement保存在对象中时,在这种情况下,只要DOM发生更改,WebElement就会变得陈旧。 您需要做的是:

WebDriver wd = new FirefoxDriver();

wd.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
wd.get("http://www.flipkart.com");
WebElement element = wd.findElement(By.xpath(".//*[@id='fk-top-search-box']"));
element.sendKeys("moto g");
element.submit();


wd.findElement(By.xpath(".//*[@id='products']/div/div[1]/div[1]/div/div[1]/a[1]/img")).click();
wd.findElement(By.xpath(".//*[@id='fk-mainbody-id']/div/div[7]/div/div[3]/div/div/div[6]/div/div[3]/div[1]/div/div[2]/div/div[2]/form/input[9]")).click();