无法在Selenium Web驱动程序中选择Iframe

vqlkdk9b  于 2022-12-13  发布在  其他
关注(0)|答案(4)|浏览(132)

我试图通过类名选择一个Iframe,但它不工作,我试图与tagName它的工作,但然后当我试图在Iframe中的元素内键入我不能,你能请帮助我这里是我的代码:

webDriver driver.switchTo().frame( driver.findElement( By.className( "cke_wysiwyg_frame cke_reset" ) ) );
driver.findElement( By.xpath( "//body[contains(text(),'type here')]" ) ).sendKeys( "Testing" );

下面是我网页中的HTML:

<div id="cke_534_contents" class="cke_contents cke_reset" role="presentation" style="height: 75px;">
   <span id="cke_586" class="cke_voice_label">Press ALT 0 for help</span>
   <iframe class="cke_wysiwyg_frame cke_reset" frameborder="0" src="" style="width: 100%; height: 100%;" aria-describedby="cke_586" tabindex="0" allowtransparency="true">
      <!DOCTYPE html>
      <html lang="en-gb" dir="ltr">
         <head>
         <body class="cke_editable cke_editable_themed cke_contents_ltr cke_show_borders" contenteditable="true" spellcheck="true">
            type here
         </body>
      </html>
   </iframe>
</div>
9cbw7uwe

9cbw7uwe1#

通过xpath查找iFrame解决了该问题

driver.switchTo().defaultContent();
driver.switchTo().frame( driver.findElement( By.xpath( iframeXpath ) ) );

然后返回顶部窗口:

driver.switchTo().defaultContent();
zwghvu4y

zwghvu4y2#

无法使用类选择iFrame。请使用以下方法检查Web驱动程序文档:-
https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.TargetLocator.html
1.可以通过“名称”/“id”属性切换到iFrame。

driver.switchTo().frame("frame1");

1.您可以按帧索引进行切换。

driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(0));

现在你必须检查整个页面有多少iFrame存在??如果它说:3,始终使用第三个iFrame。

driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(3));

希望能帮上忙。

0aydgbwb

0aydgbwb3#

是的,有一个错误。。好的,你可以做一件事。。手动计数有多少iframe在页面中,如果它的第三个whre你想切换。
直接指定int值,如doc所述,

driver.switchTo().frame(index)

因此,您的代码可能会变成这样:-

driver.switchTo().frame(3);

不要忘记返回默认内容。

driver.switchTo().defaultContent();

请让我知道这是否可行。

41ik7eoe

41ik7eoe4#

我们还可以使用定位器获取一个元素到该iframe,然后使用该元素切换到iframe。

// Store the web element
const iframe = driver.findElement(By.css('#modal > iframe'));

// Switch to the frame
await driver.switchTo().frame(iframe);

相关问题