我尝试使用selenium实现测试套件。
在编写自动脚本时,驱动程序可以使用xpath输入数据。在结果中,我可以看到输入到文本框中的值,但是在保存页面时会抛出错误,即数据未输入到列中(Stale element Exception)。
为了解决这个问题,我尝试将焦点移出并返回列并再次输入数据。我仍然遇到同样的错误。
错误讯息:
在缓存中找不到元素 - 可能页面已经更改了 查找有关此错误的文档,请访问: http://seleniumhq.org/exceptions/stale_element_reference.html建立 info:version:' 2.47.1',revision:' 411b314',time:' 2015-07-30 03:03:16'系统信息:主持人:' HQ04HQQTP006',ip:' 10.10.220.164', os.name:' Windows 7',os.arch:' x86',os.version:' 6.1',java.version: ' 1.8.0_66'驱动程序信息:driver.version:未知命令持续时间或 超时:8.17秒有关此错误的文档,请访问: http://seleniumhq.org/exceptions/stale_element_reference.html建立 信息:版本:' 2.47.1',修订版:'未知',时间:' 2015-07-30 11:02:44'系统信息:主持人:' 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'司机信息: org.openqa.selenium.remote.RemoteWebDriver功能 [{applicationCacheEnabled = true,rotate = 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}]会话ID: b95bec47-70a6-4c88-bbc0-e38c9d56aff0
如果我不清楚这个问题,请告诉我,我会尝试解释一下。
答案 0 :(得分:2)
我有两个提示供你在这里尝试:
执行sendKeys后,在同一元素上执行sendKeys(Keys.TAB)
或单击其他文本框。这样做的重点是,在您输入其他字段后,可能会有一些字段更新数据。示例:实际列。
现在完成此操作并且您看到正确输入的数据后,您需要给保存按钮留出一些时间,以防它最初被禁用。在这种情况下,使用:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.YOUR LOCATOR));
在这里,我建议您提及定位器而不是先前标识的元素,因为刷新等可能会损坏先前标识的元素。