陈旧元素参考 Selenium Web 驱动程序

Stale element reference Selenium Web driver

我尝试使用 selenium 实现一个测试套件。

在编写自动化脚本时,驱动程序可以使用 xpath 输入数据。在结果中我可以看到输入到文本框中的值,但是在保存页面时抛出数据未输入到列中的错误(陈旧元素异常)。

为了解决这个问题,我尝试将焦点移出并返回到该列并再次输入数据。我仍然遇到同样的错误。

错误信息:

Element not found in the cache - perhaps the page has changed since it was looked up For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html Build info: version: '2.47.1', revision: '411b314', time: '2015-07-30 03:03:16' System info: host: 'HQ04HQQTP006', ip: '10.10.220.164', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_66' Driver info: driver.version: unknown Command duration or timeout: 8.17 seconds For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html Build info: version: '2.47.1', revision: 'unknown', time: '2015-07-30 11:02:44' System info: host: 'HQ-GRID-001', ip: '10.10.1.206', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_65' Driver info: org.openqa.selenium.remote.RemoteWebDriver Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=40.0.3, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webdriver.remote.sessionid=b95bec47-70a6-4c88-bbc0-e38c9d56aff0, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}] Session ID: b95bec47-70a6-4c88-bbc0-e38c9d56aff0

如果问题不清楚,请告诉我,我会尽力解释。

我有两个提示供您尝试:

  1. 执行 sendKeys 后,在同一元素上执行 sendKeys(Keys.TAB) 或单击其他文本框。这样做的目的是,在您向其他字段输入内容后,某些字段可能会更新数据。示例:实际列。

  2. 完成此操作并且您看到正确输入的数据后,您需要给保存按钮一些时间,以防它最初被禁用。在这种情况下,使用: WebDriverWait wait = new WebDriverWait(driver, 10);

    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.YOUR LOCATOR));

在这里我建议您提及定位器而不是以前识别的元素,因为刷新等可能会破坏以前识别的元素。