NoSuchElementException - 无法找到元素

时间:2016-08-28 11:45:27

标签: selenium-webdriver

我有一个输入框,就像我在这里用来输入我的问题,其HTML是

<body id="tinymce" class="mce-content-body" contenteditable="true" onload="window.parent.tinymce.get('Description').fire('load');" spellcheck="false" style="padding-bottom: 50px; padding-left: 1px; padding-right: 1px; overflow-y: hidden;">
<p>
<br data-mce-bogus="1"/>
</p>
</body>

每次,我都尝试输入一些文字

@FindBy(xpath="//body[@id='tinymce']") WebElement Category_Body;
Category_Body.sendKeys("Android Smart Phone - 16GB");

我收到了错误 -

  

org.openqa.selenium.NoSuchElementException:无法找到元素:{&#34;方法&#34;:&#34; xpath&#34;,&#34;选择器&#34;:&#34; //体[@id =&#39; TinyMCE的&#39;]&#34;}

1 个答案:

答案 0 :(得分:4)

如果您获得NoSuchElementException作为提供的例外情况,可能有以下原因: -

  • 可能是在你要找到元素的时候,它不会出现在DOM上,所以你应该实现WebDriverWait等待元素可见,如下所示: -

    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement Category_Body = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("tinymce")));
     Category_Body.sendKeys("Android Smart Phone - 16GB");
    
  • 此元素可能位于任何frameiframe内。如果是,您需要在找到以下元素之前切换frameiframe: -

    WebDriverWait wait = new WebDriverWait(driver, 10);
    
    //Find frame or iframe and switch
    wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("your frame id or name"));
    
    //Now find the element 
    WebElement Category_Body = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("tinymce")));
     Category_Body.sendKeys("Android Smart Phone - 16GB");
    
    //Once all your stuff done with this frame need to switch back to default
    driver.switchTo().defaultContent();