当前位置: 首页 > 面试题库 >

无法通过Java中的Selenium定位位于父iframe中的子iframe元素

竺展
2023-03-14
问题内容

到目前为止,这就是我所拥有的:我已将框架切换到其父框架,然后又切换到了我无法找到的框架:

By frame = By.xpath("//iframe[@class='GenCss_style-Model']");

driver.switchTo().frame(driver.findElement(By.name("documentflowdesk")));
driver.switchTo().frame(driver.findElement(frame));

由于找不到“ frame”元素,因此出现此错误:

org.openqa.selenium.NoSuchElementException:无法找到元素

HTML:

<iframe src="about:blank" name="documentflowdesk" class="gwt-Frame-NavigationComponentViewImplResourcesapplicationFrame" id="documentflowdesk" style="position: absolute; left: 0px; top: 0px; visibility: visible; height: 100%;"></iframe>    
#documentflowdesk
<html style="overflow: hidden;">
    <head>...</head>
    <body style="margin: 0px;" class="dragdrop-dropTarget dragdrop-boundary">
    <noscript>...</noscript>
    <div style="position: absolute; overflow: hidden; left: 0px; top: 0px; right: 0px; bottom: 0px;">
        <div class="css-DeskStyleResources" style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px;">
            <div style="position: absolute; overflow: hidden; left: 0px; top: 0px; right: 0px; bottom: 0px;">
                <div style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px;">
                    <div style="position: absolute; overflow: hidden; left: 0px; top: 0px; right: 0px; bottom: 0px;">
                        <iframe class="GenCss_style-Model" src="/model/?modelId=100&amp;docGroupId=164&amp;connectionPointId=73" style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px;"></iframe>

我要定位的iframe位于多个div中。它与错误有关系吗?还是我的元素查找方式有问题?


问题答案:

按照HTML,一旦进入 父框架 ,就必须:

  • 诱导 WebDriverWait 使 父框架 可用并切换到它。
  • 诱导 WebDriverWait 使 子框架 可用并切换到它。
  • 您可以使用以下解决方案:
    new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@class='gwt-Frame-NavigationComponentViewImplResourcesapplicationFrame' and @id='documentflowdesk']")));
    

    new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath(“//iframe[@class=’GenCss_style-Model’ and contains(@src,’connectionPointId’)]”)));

在这里,您可以找到有关iframe下#document处理方式的相关讨论)



 类似资料:
  • 我正在学习使用Java和Eclipse IDE的Selenium测试自动化。我正在尝试开发自己的XPAHT,但我在浏览器上安装了Chropath来帮助解决我自己无法解决的问题。在尝试与play按钮交互时,我遇到了以下问题几次。测试的目标是导航到网站的播客页面,选择一个播客,点击播放按钮。我尝试开发自己的xpath,但没有找到任何工作的xpath。我检查了Chropath插件,得到了这样的消息: 它

  • 你知道为什么吗?

  • 我知道我必须切换到一个iframe当我想要点击和元素在它里面。iFrame的开头是这样的: 我使用切换到它 然后,我尝试单击Iframe中的“Join”按钮,使用它的XPath: 在一张桌子里面。 我可以选择“以前的会议”选项卡,但不能使用加入或邀请按钮。 这两个图像只是一个接着一个。

  • 在过去的5天里,我一直在寻找拖放的有效解决方案。所以, Selenium. WebDriver 2.44.0 网络驱动程序。ChromeDriver。win32 2.13.0.0 Chrome最新版本。 C#,页面对象模式。抱歉屏幕上出现俄文描述:) 我们有. net cms。它有页面编辑器。编辑器在父页面中打开,如果从同一域加载到iframe中,则要编辑的页面。 我需要拖动'n'放置项目(图片,

  • 当我运行此代码时: 我收到以下错误: org.openqa.selenium.InvalidSelectorException:无法计算xpath表达式'//输入[包含(@id,'name']'要留档此错误,请访问:http://seleniumhq.org/exceptions/invalid_selector_exception.html构建信息:版本:'2.20.0',修订版:'16008'

  • 我试图通过selenium单击save按钮,但是,我得到的错误是它无法定位元素。 这是网站的html部分 这是我得到的错误: NoSuchelementException:没有这样的元素:找不到元素:{“method”:“id”,“selector”:“divflashviewermain_savepdfbuttonicon”} (会话信息:chrome=74.0.3729.169)(驱动程序信息