:切り替え時JSONのパースエラーには、GoogleのSafeFrame広告に切り替えたとき
var frames = driver.FindElements(By.TagName("iframe"));
foreach (var frame in frames) {
driver.SwitchTo().Frame(frame);
//Do stuff then switch back to default content
}
一部のGoogleの広告safeframesはこの例外をスロー:
"JSON Parse error: Unterminated string"
私はフレームに切り替えるときにJSONではなくHTMLとしてコンテンツを読むことをSeleniumが期待していました。
、Googleの広告safeframe Iに切り替えるしようとしています:name属性は、アイフレームのDOMが含まれているとして、それは60,000文字の上にありますよう
<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を短くカットされます。
セレンはどのようにしてこれらのGoogle広告のセーフフレームに切り替えることができますか?
作業しているウェブページへのリンクを共有できますか?ありがとう。 – alecxe
サイクルのある広告の性質上、それは難しいですが、http://express.co.ukでは通常、リフレッシュごとにセーフフレーム広告が表示されます。トップレベルで、属性data-is-safeframe = "true"で整備されたセーフフレーム広告。私は、FireBugがSeleniumと違って、これらのセーフフレームを解析するのに問題がないことに言及する価値があると思います。 – badger110
ありがとうございました。express.co.ukページのフレームからフレームへの切り替えを試みました。問題は発生しませんでした。あなたが最新のセレンとFirefoxのバージョンを使用しているか確認してください。その他の追加情報も役立ちます。 – alecxe