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

时间:2016-03-19 04:28:00

标签: selenium firefox xpath selenium-webdriver selenium-grid

我尝试使用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

如果我不清楚这个问题,请告诉我,我会尝试解释一下。

enter image description here

1 个答案:

答案 0 :(得分:2)

我有两个提示供你在这里尝试:

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

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

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

  3. 在这里,我建议您提及定位器而不是先前标识的元素,因为刷新等可能会损坏先前标识的元素。