2013-08-21 131 views
0

我使用下面的输入在文本框中输入文本获取ElementNotVisibleException:当与XPath名称查找元素

driver.findElement(By.xpath("//input[@name = 'c_1']")).sendKeys("Test");

HTML:

<div id="ext-comp-1110" class=" x-panel criterion-block" style="width: 252px;"> 
<div id="ext-gen397" class="x-panel-bwrap"> 
    <div id="ext-gen398" class="x-panel-body x-panel-body-noheader" style="width: 252px;"> 
     <div id="ext-comp-1111" class=" x-panel criterion-label"> 
      <div id="ext-gen413" class="x-panel-bwrap"> 
       <div id="ext-gen414" class="x-panel-body x-panel-body-noheader"> 
        <label id="ext-comp-1112">Insured Name contains:</label> 
       </DIV> 
      </DIV> 
     </DIV> 
     <input id="ext-gen186" class=" x-form-text x-form-field criterion " type="text" name="c_1" autocomplete="off" size="20" style="width: 222px;" title=""> 
    </DIV> 
</DIV> 

当我运行这个我得到一个元素不可见的异常。

回答

0

它通常发生在元素被隐藏或被隐藏元素(如<div>)包围时。 Selenium Webdriver只能在可见的情况下处理。 (我用javascript做到了 - >参考链接)

look here how to handle hidden elements

+0

它不隐藏或隐藏任何隐藏的DIV。使用ID时可以达到同样的效果,但是这个ID在每次刷新时都会改变,所以用名称 – Srivardhan

+0

检查您使用'driver.findElement(By.xpath(“// input [@name ='c_1']] “))。isDisplayed();' – Ievgen

+0

有2个对象,当我检查大小,但当我检查显示我得到错误 – Srivardhan

0

试着这么做;

driver.findElement(By.xpath("//div[@id='ext-comp-1112']/../../following-sibling::input")) 

如果您要使用标签文本;

driver.findElement(By.xpath("//div[text()='Insured Name contains:']/../../following-sibling::input")) 

NB。我已经从内存中写了这样的内容,所以它可能需要调整,但你应该明白这个想法