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

在iframe下处理#document的方法

蔡鹏程
2023-03-14
问题内容

对于我现在正在测试的门户网站,我遇到了一个问题,即我无法创建任何xpath定位器,经过一段时间后,我发现这是因为存在“#document”,这会剪切路径并简化为“复制xpath” ”将路径引向完全不同的元素。

    <iframe id="FRAMENAME" src="/webclient/workspace/launch-task/REMbl?ds=BP" width="100%" height="100%" frameborder="0" data-navitemname="navitemname" style="" xpath="1">
    #document
        <html>
            CODE....
        </html>

我发现解决方案是,只需添加一个switchTo,就像这样:

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

这可以使其余代码正常工作,但是需要花费一些额外的时间来处理此命令,直到代码移至下一行为止。

所以我想问,有没有更好的解决方案?更聪明/更快的东西?

我担心当我拥有大量脚本的时候,执行时间将花费很长时间。

例如,我不使用id定位器,因为它们都是动态的,因此有时需要xpath。

谢谢!


问题答案:

内联框架

根据使用内联框架中的文档,内联框架是一种将文档嵌入HTML文档中的结构,以便将
嵌入的数据显示在 浏览器窗口 的子
窗口中。这并不意味着完全包含并且两个文档是独立的,并且它们都被视为完整文档,而不是将一个文档视为另一个文档的一部分。

iframe结构和详细信息

  • 通常,iframe元素的形式为:
        <iframe src="URL" more attributes>
    alternative content for browsers which do not
    support iframe
    </iframe>
  • 支持iframe的浏览器通常在垂直和/或水平滚动条的子窗口中显示URL引用的文档。此类浏览器会忽略iframe元素的内容(即,开始标记<iframe...>和结束标记之间的所有内容</iframe>)。不支持iframe(或禁用了此类支持)的浏览器则执行相反的操作,即处理内容,就好像<iframe...>and </iframe>标记不在那里。因此,尽管某些浏览器忽略了内容,但内容仍然很重要。

  • 综上所述,内联框架并不意味着 包含功能 ,尽管有时可能起到类似的作用。

  • 请注意,使用内联框架时,浏览器(如果支持)会向URLiframe元素中的引用服务器发送请求,并在获得请求的文档后将其显示在内联框架内。从这个意义上讲,内联框架是浏览器-服务器的共同问题,但是只有浏览器才需要特别了解iframe;从服务器的角度来看,只有一个正常的HTTP请求用于文档,并且它发送文档时对浏览器将如何处理该文档没有任何要求。

更聪明的东西

根据切换到 iframe 时的 最佳做法 ,您需要按以下步骤诱导 WebDriverWait

  • 切换 框架名称 (Java示例代码):

    new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.name("frame_name")));
    
  • 切换 iframe XPath (Python示例代码):

        WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='ptifrmtgtframe' and @name='TargetContent']")))
  • 通过 iframe CssSelector 切换(C#示例代码):
    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.CssSelector("iframe#twitter-widget-0")));
    

tl; 博士

内联框架与普通框架



 类似资料:
  • 对于我现在测试的门户,我遇到了无法创建任何xpath定位器的问题,过了一段时间后,我发现这是因为一个“#Document”,这会切断路径,并使用简单的“Copy xpath”将路径指向一个完全不同的元素。 我发现解决办法是简单地添加一个开关,如下所示: 这样可以正常工作,并使其余代码正常工作,但是处理此命令需要一些额外的时间,直到代码移动到下一行。 所以我想问,对此有没有更好的解决办法呢?更聪明/

  • 问题内容: 对于我现在正在测试的门户网站,我遇到了一个问题,即我无法创建任何xpath定位器,经过一段时间后,我发现这是因为存在“ document”,这会切断路径并简化为“复制xpath” ”将路径引向完全不同的元素。 我发现解决方案是,只需添加一个switchTo,就像这样: 这可以使其余代码正常工作,但是需要花费一些额外的时间来处理此命令,直到代码移至下一行为止。 所以我想问,有没有更好的解

  • 本文向大家介绍jQuery获取iframe的document对象的方法,包括了jQuery获取iframe的document对象的方法的使用技巧和注意事项,需要的朋友参考一下 获取iframe的document对象的目的就是进行dom的操作 这样输出来的结果是:document对象

  • 本文向大家介绍java selenium处理Iframe中的元素示例,包括了java selenium处理Iframe中的元素示例的使用技巧和注意事项,需要的朋友参考一下 java selenium  处理Iframe 中的元素 有时候我们定位元素的时候,发现怎么都定位不了。 这时候你需要查一查你要定位的元素是否在iframe里面 阅读目录 什么是iframe iframe 就是HTML 中,用于

  • 本文向大家介绍python处理document文档保留原样式,包括了python处理document文档保留原样式的使用技巧和注意事项,需要的朋友参考一下 document文档格式、线段、图片、页眉页脚等都不变,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 在这种情况下有一个under 。而且我必须选择外表去内在,并写在内在的身体上。 接下来,我必须从内部到外部出来,然后单击“确定”按钮(位于外部)。 以下是我的代码 以下是我的问题: 我的测试代码可以正常工作到第4行,即写到正文中,但是我想从内到外显示它未找到该元素。 我尝试使用索引,父母,亲戚,但没有运气。 注意: 如果我不选择内部框架()。我可以单击“确定”按钮。 问题答案: 在We