由于分割不同,无法找到带有xpath的元素

时间:2016-06-16 13:41:43

标签: xpath selenium-webdriver

你能帮忙解决这个错误。收到错误:

  

无法找到带有xpath的元素

在元素的标签下面是文本区域

<td nowrap="">
<script> 
function clipBrdAction(evt, fieldName) { 
    evt = evt||window.event;     
    if(evt.ctrlKey && evt.keyCode==67) {      
        document.execCommand('copy');      
        //var temp = $(fieldName).value;      
        //clipboardData.setData('Text', temp);      
        //$(fieldName).value = clipboardData.getData('Text');     
    }     
    else if(evt.ctrlKey && evt.keyCode==86) {
        document.execCommand('paste');      
        //$(fieldName).value = clipboardData.getData('Text');     
    }     
    else if(evt.ctrlKey && evt.keyCode==88) {      
        document.execCommand('cut');      
        //var temp = $(fieldName).value;      
        //clipboardData.setData('Text', temp);      
        //$(fieldName).value = '';     
    } else if(evt.keyCode==46) {      
        document.execCommand('delete');      
        //var selStart = $(fieldName).selectionStart;      
        //var selEnd = $(fieldName).selectionEnd;      
        //var fieldLen = $(fieldName).value.length;      
        //if (selEnd == fieldLen)         
        // temp = $(fieldName).value.substr(0,selStart);      
    //else if (selEnd > selStart)      
        // temp = $(fieldName).value.substr(0,selStart)+ $(fieldName).value.substr(selEnd, fieldLen);     
    //else      
        // temp = $(fieldName).value.substr(0,selStart)+ $(fieldName).value.substr((+selEnd + +1), fieldLen);      

    //clipboardData.setData('Text', temp);      
    //$(fieldName).value = clipboardData.getData('Text');     
} 
</script>

<textarea id="nrpsFilter" rows="3" onkeypress="return checkIt(event,'');" cols="30" title="" onblur="this.value=trim(this.value);" onkeyup="" onkeydown="return clipBrdAction(event, 'nrpsFilter');" name="nrpsFilter"/>
</td>

我的代码是:

driver.findElement(By.xpath("//*[@id='nrpsFilter']")).sendKeys("*1??0*");

在Firepath中,元素是可识别的,当我搜索同一分区(div标签)下的另一个元素但在搜索不同分区的元素后无法识别。这是否意味着我应该切换到我的代码中的分区?这两个部门都在同一框架下。

2 个答案:

答案 0 :(得分:0)

好的,然后在使用Sendkeys之前,请先切换到iframe,然后您的代码才能正常运行。

driver.switchTo().frame("frame name");
// perform your action 
// after you have performed all your action inside the iframe 
// plz switch back to the default content 

driver.switchTo().defaultContent(); 
// now perform your user action outside that iframe

希望这有助于你

答案 1 :(得分:0)

试试这个,看它是否有效。我从你的评论中得到了它,但重新安排了一些陈述。我想你也希望最终的sendkeys()也在IFRAME,对吗?我们确实需要更完整的HTML来帮助您。

driver.findElement(By.xpath("//*[@id='first']//span")).click(); // (1. Click Dropdown)
driver.findElement(By.xpath("//*[@id='ui-id-33']/span")).click(); // (2. Click SubDropDown )
driver.findElement(By.xpath("//a[contains(text(),'Quick Search')][@id='referential_quicksearch']")).click(); // (3.Click the link)
driver.findElement(By.xpath("//*[@id='nrpsFilter']")).sendKeys("1?0*");// (Enter in textArea)
driver.switchTo().defaultContent();