2017-10-07 116 views
-1

这是我的示例html代码。如何在Chrome网络驱动程序中获取自定义标签中的元素

<div class="content"> 
<M class="mclass"> 
    <section id="sideA"> 
     <div id="mainContent"> 
      <div class="requestClass"> 
       <span>Check</span> 
       <input type="text" id="box"> 
      </div> 
     </div> 
    <section> 
    <section id="sideB"> 
     ... 
    <section> 
</M> 
</div> 

我想为我的文本字段(“框”)设置一些值。所以,我累了设置像下面的代码

driver.findElement(By.xpath("...")).sendKeys("SetValue"); 

我Xpath的ID是正确的,它在网页存在,但我得到这个错误

no such element: Unable to locate element: {"method":"xpath","selector":"id("..."} 

为什么我收到,因为我的自定义标签的这个错误,如果是的话如何获取自定义标签内的元素?

+1

包括您的完整的XPath。任何原因你没有使用ID ... – Grasshopper

+1

尝试使用ID? – amitbobade

+2

为什么不使用'id'?只是:'driver.findElement(By.id(“box”)。sendKeys(“SetValue”);' – krokodilko

回答

0

如果您仍然想使用XPath。这个工作对我 -

driver.FindElement(By.XPath(@"//*[@id='box']")).SendKeys("AB‌​"); 

我不认为自定义标签引起任何问题,因为CssSelector还工程─

driver.FindElement(By.CssSelector(@"m[class='mclass'] input")).SendKeys("AB"); 
0

您可以使用IDxpath找到它,我建议你有使用ID。也可以使用显式等待直到元素可见。

使用ID,你的代码是这样的:

 WebElement elem= driver.findElement(By.id("box")); 
     WebDriverWait wait=new WebDriverWait(driver, 10); 
     wait.until(ExpectedConditions.visibilityOf(elem)); 
     elem.sendKeys("test"); 

您还可以使用JavascriptExecutor

 WebElement elem= driver.findElement(By.id("box")); 
     WebDriverWait wait=new WebDriverWait(driver, 10); 
     wait.until(ExpectedConditions.visibilityOf(elem)); 
     JavascriptExecutor myExecutor = ((JavascriptExecutor) driver); 
     myExecutor.executeScript("arguments[0].value='test';", elem); 
0

由于每HTML您提供一些值填充到所代表的文本字段<input type="text" id="box">您可以使用以下任一代码行:

  1. cssSelector

    driver.findElement(By.cssSelector("section#sideA input#box")).sendKeys("SetValue"); 
    
  2. xpath

    driver.findElement(By.xpath("//section[@id='sideA']//input[@id='box']")).sendKeys("SetValue"); 
    
相关问题