本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决
下面是html代码..在上述场景中,我想切换到IFRAME(iframeid="I0_1366100881331")以对该IFRAME中存在的SPAN执行一些操作。我已经尝试过大多数情况,但没有结果:(...任何人都请帮忙。我想要只使用capybararuby的cucumber解决方案..注意:我尝试了以下代码但没有结果。page.driver.browser.switch_to.frame"I0_1366100881331" 最佳答案 within_frame(find(''))doend
我有一个使用onfocus事件的html应用程序。切换浏览器选项卡时,它工作得很好。现在,当我将该应用程序作为另一个html页面中的iframe加载时,它无法正常工作,因为在切换选项卡时iframe没有聚焦。如何从iframe访问onfocus事件无需修改顶层代码。iframe和加载iframe的页面不是同源的。if(!window.parent.frames.length){window.onfocus=function(){//dosmth};}else{//???} 最佳答案 您可以使用HTML5可见性API。它允许您检测用户
我尝试了一些不同的方法,但没有任何效果,基本上我需要从iframe获取当前位置/url,获取我想要的部分并将其返回到url中的哈希。我如何在javascript中执行此操作? 最佳答案 选择正确的iframe元素,拉出src属性,做你的事情,将src分配给window.location.hashvariframe=$('iframe');varsrc=iframe.attr('src');window.location.hash=src;编辑如果您想从iframe获取动态位置,您必须访问contentWindow属性:varifra
我想以编程方式检测我的网站是否在FacebookiFrame应用程序中,以便我可以显示特定的Facebook功能。否则,如果有人在没有Facebook的情况下访问网站。最好是FBML、C#或JS解决方案:)谢谢! 最佳答案 好吧,您始终可以使用基本的javascript检查页面是否被加框if(top===window){//pageisnotframed}此外,当用户首次点击您的Canvas页面时,Facebook平台会向您的回调URL发送一堆数据,无论是在正常的GET参数中还是在单个编码参数(取决于您的设置)中,您也可以检查这些数
我在iframe中有这段代码。$(document).ready(function(){$("body").append($("#ctap").html());});我想将#ctap的html附加到父正文。我该怎么做? 最佳答案 尝试在document.ready中执行以下代码parent.$("body").append($("#ctap").html()); 关于javascript-如何从iframe将元素附加到父主体?,我们在StackOverflow上找到一个类似的问题:
是否有一种简单的方法来加载将在TinyMCEiframe中运行的外部javascript?我唯一找到的(这可能是答案)是:http://www.tinymce.com/wiki.php/API3:class.tinymce.dom.ScriptLoader但我不确定如何正确加载它或者它是否有效。我试图在tinymce.init指令之前和之后加载它,甚至在它内部,但似乎没有任何效果。只是想知道如何初始化“ScriptLoader”函数。 最佳答案 您可以使用setup初始化配置参数来使用脚本加载器tinyMCE.init({...se
我在使用MagnificPopup时遇到问题,我需要能够使用javascript函数在iframe上设置高度和宽度。以下代码对我输入的高度和宽度没有反应,怎么了?///Call////openmagnificPopup(url,h,w);///Java////functionopenmagnificPopup(url,h,w){$.magnificPopup.open({items:{src:url,type:'iframe',iframe:{markup:''+''+'xxxxxx'+''+''}}});/////CSS/////.mfp-iframe-holder.mfp-cont
我正在开发一个带有list的Chrome扩展程序,目前可以访问所有主机。后台脚本将内容脚本注入(inject)所有框架。DOM加载完成后,顶部页面/框架中的内容脚本开始遍历DOM树。当walker遇到iframe时,它需要向与该iframe窗口相关联的特定内容脚本发送消息(可能是跨源)以开始其工作,并在此消息中包含一些序列化数据。父窗口暂停执行并等待子窗口完成它的行走,并发送回一条消息,表明它已完成并连同序列化数据。parent然后继续其工作。我已经尝试了两种方法来解决这个问题:frameElement.contentWindow.postMessage:这在大多数情况下都有效,但
我疯狂地尝试将请求自定义header(类似于'AUTH-TOKEN':'SomeToken123')注入(inject)到Angular4上。我需要向iframe页面传递一些必需的自定义header参数。谁能帮帮我?foo.component.html组件.ts@Component({selector:'app-foo',templateUrl:'./foo.component.html'})exportclassFooComponentimplementsOnInit{@ViewChild('iframe')iframe:ElementRef;publicisLoading:Bool