陈旧元素参考 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
如果问题不清楚,请告诉我,我会尽力解释。
我有两个提示供您尝试:
执行 sendKeys 后,在同一元素上执行 sendKeys(Keys.TAB)
或单击其他文本框。这样做的目的是,在您向其他字段输入内容后,某些字段可能会更新数据。示例:实际列。
完成此操作并且您看到正确输入的数据后,您需要给保存按钮一些时间,以防它最初被禁用。在这种情况下,使用:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.YOUR LOCATOR));
在这里我建议您提及定位器而不是以前识别的元素,因为刷新等可能会破坏以前识别的元素。
我尝试使用 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
如果问题不清楚,请告诉我,我会尽力解释。
我有两个提示供您尝试:
执行 sendKeys 后,在同一元素上执行
sendKeys(Keys.TAB)
或单击其他文本框。这样做的目的是,在您向其他字段输入内容后,某些字段可能会更新数据。示例:实际列。完成此操作并且您看到正确输入的数据后,您需要给保存按钮一些时间,以防它最初被禁用。在这种情况下,使用:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.YOUR LOCATOR));
在这里我建议您提及定位器而不是以前识别的元素,因为刷新等可能会破坏以前识别的元素。