我有一个输入框,就像我在这里用来输入我的问题,其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;}
答案 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");
此元素可能位于任何frame
或iframe
内。如果是,您需要在找到以下元素之前切换frame
或iframe
: -
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();