1

我有一组测试,其中第一个运行并且休息失败。它只是将项目列表添加到购物车。我有一个错误:“在缓存中找不到元素 - 页面可能在查找后已更改”。我尝试使用以下似乎没有帮助的代码。

driver.Manage().Cookies.DeleteAllCookies();

有什么办法可以清除缓存或摆脱这个错误。

代码:在此验证方法中停止。当我注释掉这些行时,测试会针对所有项目运行。

    public bool VerifyItemPresentInCart()
    {
            //Get the cartsize and verify if one item present
            IWebElement cartSize = driver.FindElement(By.CssSelector("div[class='cart-size']>div"));                                             
            string actualMsg = cartSize.Text;
            string expectedMsg = "1";
            VerifyIfTextPresentMethod(expectedMsg,actualMsg);                
            return true;                  
    }

更新:该测试具有通用方法,因此对于要添加到购物车中的每个项目重复方法。这是那些常见的方法之一。这些方法适用于第一个项目,比如电话并将其添加到购物车。对于第二个项目,当整个过程重复时,我在这个方法中得到了这个错误。

4

1 回答 1

0

您看到的错误是由于以下两个原因之一

  1. 该元素已被完全删除。
  2. 该元素不再附加到 DOM。

在离开页面后,您尝试与之交互的 web 元素无法再次“引用”。

检查代码中发生此错误的行,然后尝试再次查找该元素。

例子 : -

webelement = @driver.find_element(:id, "amey")
# Some other interaction whcih causes the element to become "stale"
webelement.send_keys "Hey!" # "Element not found in the cache - perhaps the page has changed since it has looked up" error is shown

将其更改为

@driver.find_element(:id, "amey").send_keys "Hey!" #lookup the same element again

有关更多信息,请查看此处

更新

对您的代码进行了更改

{
            //Get the cartsize and verify if one item present
            VerifyIfTextPresentMethod("1",driver.FindElement(By.CssSelector("div[class='cart-size']>div")).Text);                
            return true;                  
}
于 2013-05-29T18:17:09.433 回答