用JS:
documentgetElementByIdx('frameName')contentWindowdocumentgetElementByIdx('test')stylecolor='red'
用jQuery:
$(windowframes['frameName']document)find('#test')css('color','red');
selenium可以直接获取到页面动态渲染后的html元素,像你这个情况前提是要先切换到frame里,切换的代码是:driverswitch_toframe("frame1"),其中frame1是frame的id或name
这种方法是对的,不过前提是:你必须有足够权限访问 iframe Docuemnt —— 同域
例如,indexhtml 和 my_framehtml 都在同一域名下,或都在桌面,这样可以
但如果你把 iframe 的 src 换为百度网址,就会出现类似下面的错误
Permission denied to access property 'getElementById'
无权访问 'getElementById' 属性
如果你的情况是后者,那就没有解决办法。如果是前者,可能你的代码中有错误。
$(function(){//相当天body的 onload,要等页页面加载完毕后才能找到iframe
$("#hong")contents()find("body")append("I'm in an iframe!");
});
</script>
<iframe width="1198" height="729" name="hong" id="hong" src="" scrolling="no" style="text-align:center"></iframe>
在开发中,我们都会选择使用Masonry来做适配,但是有时我们又需要获取某个控件的frame,这时就会发现用Masonry布局的获取不到控件的frame。
这是因为用Masonry布局时控件的还没有在视图上展示出来,所以frame也就没有了,具体原理就得看Masonry实现的原理了,单用frame布局的就会有。
这时如果我们需要获取到frame的话就得刷新视图
这个方法将会刷新视图。在这个方法后就能获取frame
想要再深入了解的可以点这个链接看看
>
以下面的html代码为例,我们看一下如何定位frame上的元素。
framehtml
<html>
<head>
<title>Frame</title>
<style>
#f_1 {width: 10em; height: 10em; border: 1px solid #ccc; }
#f_2 {display: none}
</style>
</head>
<body>
<p id = "p">Outside frame</p>
<iframe id = "f_1" src = "part1htm"></iframe>
<iframe id = "f_2" src = "part2htm"></iframe>
</body>
</html>
part1htm
<html>
<head><title>Part1</title></head>
<body>
<p id = "f_p">This is part 1</p>
<input id = "btn" type = "button" value = "click me" onclick = "alert('hello')" />
</body>
</html>
switch_to方法会new1个TargetLocator对象,使用该对象的frame方法可以将当前识别的”主体”移动到需要定位的frame上去。
require 'selenium-webdriver'
dr = Selenium::WebDriverfor :chrome
frame_file = 'file:///'+Fileexpand_path(Filejoin(Filedirname(__FILE__),'framehtml'))
以上就是关于想做一个网页游戏脚本,但是到获取网页元素的时候卡住了,是frame框架全部的内容,包括:想做一个网页游戏脚本,但是到获取网页元素的时候卡住了,是frame框架、selenium的python自动测试的子frame的动态页面的元素控制、如何获取页面iframe元素内容的高、宽等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)