在缓存中找不到元素 - 自查询以来页面可能已更改有关此错误的文档

时间:2017-01-05 07:02:18

标签: selenium xpath

我无法找到这个元素;它显示如下错误:

  

在缓存中找不到元素 - 可能页面已经更改了   被查询有关此错误的文档

WebElement w4= d.findElement(By.xpath("//input[@name='businessPartner' 
               and @oninput='isc_OBSelectorItem_1.$303()']"));
   expcitlyWait(w4);
   w4.sendKeys("DURIAN INDUSTRIES LTD");
   w4.sendKeys(Keys.TAB);
   w4.sendKeys(Keys.ENTER);
}

应该找到的示例输入:

<input id="isc_T3" 
 name="businessPartner"
 oninput="isc_OBSelectorItem_1.$303()"
 class="OBFormFieldSelectInputRequired" 
 type="TEXT" tabindex="2239" 
 style="WIDTH:233px;HEIGHT:19px;-moz-user-focus:normal;" 
 autocomplete="OFF" 
 spellcheck="true" 
 $187="$188" 
 $186="isc_OBSelectorItem_1" 
 handlenativeevents="false" 
/>

1 个答案:

答案 0 :(得分:0)

好的问题似乎是,您引用为“w4”的元素不再存在,或者不存在于同一个地方。 如果页面上的某些内容发生了更改,则会在xpath调用和对w4

的调用之间发生此错误

尝试使用绝对Xpath。 (找到w4,并在d上找到输入)。 所以你的代码应该看起来像那样:

expcitlyWait(d.findElement(By.xpath("//input[@name='businessPartner' 
           and @oninput='isc_OBSelectorItem_1.$303()']")));
d.findElement(By.xpath("//input[@name='businessPartner' 
           and @oninput='isc_OBSelectorItem_1.$303()']"))
           .sendKeys("DURIAN INDUSTRIES LTD");
d.findElement(By.xpath("//input[@name='businessPartner' 
           and @oninput='isc_OBSelectorItem_1.$303()']"))
           .sendKeys(Keys.TAB);
d.findElement(By.xpath("//input[@name='businessPartner' 
           and @oninput='isc_OBSelectorItem_1.$303()']"))
           .sendKeys(Keys.ENTER);