我试图通过DOM中的所有I帧切换:切换时JSON解析错误
var frames = driver.FindElements(By.TagName("iframe"));
foreach (var frame in frames) {
driver.SwitchTo().Frame(frame);
//Do stuff then switch back to default content
}
一些谷歌的广告safeframes抛出此异常:
"JSON Parse error: Unterminated string"
我希望Selenium在切换到帧时将内容读取为HTML而不是JSON。
的谷歌广告safeframe我想切换到:
<iframe name="1-0-2;63563;<!doctype html><html><head><style><!--a:link { color: #000000 }a:visited { color: #000000 }a:hover { color: #000000 }a:active { color: #000000 } --></style><script><!--(function(){var b=this;var f=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},m=function(a,c){return a<c?-1:a>c?1:0};var n;a:{var p=b.navigator;if(p){var q=p.userAgent;if(q){n=q;break a}}n=""};var r=-1!=n.indexOf("Opera")||-1!=n.indexOf("OPR"),t=-1!=n.indexOf("Trident")||-1!=n.indexOf("MSIE"),u=-1!=n.indexOf("Edge"),v=-1!=n.indexOf("Gecko")&&!(-1!=n.toLowerCase().indexOf("webkit")&&-1==n.indexOf("Edge"))&&!
的iFrame的HTML被缩短,因为它是超过60000个字符的名称属性包含I帧DOM。
任何人都知道如何让Selenium切换到这些谷歌广告safeframes?
您能分享您正在使用的网页的链接吗?谢谢。 – alecxe
由于周期性广告的性质,这很困难,但http://express.co.uk通常在每次刷新时都有一个安全框架广告。安全框架广告与顶级属性data-is-safeframe =“true”匹配。我认为值得一提的是,与Selenium不同,FireBug在解析这些安全框架时没有问题。 – badger110
谢谢,试图在express.co.uk网页上切换帧..没有遇到任何问题。在黑暗中拍摄 - 检查您是否使用最新的硒和firefox版本。任何其他附加信息也可以提供帮助。 – alecxe