需要帮助写入iFrame



我在写入iframe时遇到了问题,我能够识别iframe,但我无法向框架中写入任何内容。每当我尝试在框架中写入时,我都会得到以下错误。

<>之前elementnotvisibleexception:元素当前不可见,因此可能无法与之交互命令持续时间或超时时间:211毫秒构建信息:版本:'2.43.1',修订:'5163bce',时间:'2014-09-10 16:27:33'之前

这是我的HTML代码截图。

HTML片段:

<div id="offer_description_field" class="control-group wysihtml5_type description_field ">
    <label class="control-label" for="offer_description">
        Description
    </label>
    <div class="controls well">
        <ul class="wysihtml5-toolbar" style="">
        <textarea id="offer_description" class="bootstrap-wysihtml5ed" rows="3" name="offer[description]" data-richtext="bootstrap-wysihtml5" data-options="{"csspath":"/assets/bootstrap-wysihtml5.css","jspath":"/assets/bootstrap-wysihtml5.js","config_options":"null"}" cols="48" style="display: none;"></textarea>
        <input type="hidden" name="_wysihtml5_mode" value="1">
        <iframe class="wysihtml5-sandbox" width="0" height="0" frameborder="0" security="restricted" allowtransparency="true" marginwidth="0" marginheight="0" style="display: inline-block; background-color: rgb(255, 255, 255); border-collapse: separate; border-color: rgb(204, 204, 204); border-style: solid; border-width: 1px; clear: none; float: none; margin: 0px; outline: 0px none rgb(0, 0, 0); outline-offset: 0px; padding: 4px 6px; position: static; z-index: auto; vertical-align: middle; text-align: start; box-sizing: content-box; box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.075) inset; border-radius: 4px; width: 327.8px; height: 60px; top: auto; left: auto; right: auto; bottom: auto;"></iframe>
        <p class="help-block">Required. Add offer description.</p>
    </div>
</div>

当我用上面的代码片段创建一个简单的HTML文件时,我不能与元素交互。手动我能够在这个框架内写任何东西,当它是与完整的代码库。看起来它正在用iframe替换文本区域。不知道如何处理这种类型的元素

这是它在面板上的显示方式。

有人能帮忙吗?

此错误与IFRAME无关。实际上,与之交互的元素并不在IFRAME中。您不能与它交互的原因在错误中说明。

org.openqa.selenium。ElementNotVisibleException:元素当前不可见,因此可能无法与

交互

元素不可见。如果你看TEXTAREA元素,它被标记为style="display: none;",这就是为什么它不可见。Selenium被设计为像用户那样与页面交互,因此不会与隐藏元素交互。你需要像用户那样处理这个问题……用户如何让文本区域出现?我假设点击一些东西,等等。您将需要您的脚本来执行用户将执行的任何操作,然后TEXTAREA将变得可见,并将能够与之交互。

在使用框架时应该注意以下事项:1.选择框架。然后进入text/textarea。注意:有时元素不在UI的可见区域,因此我们可能需要将元素放入视图中,在进入text/textarea之前执行以下代码spinet:webelementelement = driver.findElement(By.id("id_of_element"));((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);

2。然后取消选择框架。

使用以下代码将id/class转换为iframe

driver.switchTo().frame(driver.findElement(By.id("Enter id of element")));

driver.switchTo().frame(driver.findElement(By.class("Enter class of element")));

切换到框架后,使用正常步骤选择元素。像

driver.findelement(By.id/class/css/xpath("Enter Element id/class/css/xpath"));

然后,如果您想从主框架中选择任何其他元素,只需返回到您的主框架,使用以下代码

driver.switchTo().defaultContent();

最新更新