gpt4 book ai didi

c# - 切换到 Google Safeframe 广告时出现 JSON 解析错误

转载 作者:行者123 更新时间:2023-11-30 18:21:03 25 4
gpt4 key购买 nike

我正在尝试切换 DOM 中的所有 iframe:

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 广告安全框架在切换时抛出此异常:

"JSON Parse error: Unterminated string"

我希望 Selenium 在切换到框架时将内容读取为 HTML 而不是 JSON。

Google 广告 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,&quot;&quot;)},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=&quot;&quot;};var r=-1!=n.indexOf(&quot;Opera&quot;)||-1!=n.indexOf(&quot;OPR&quot;),t=-1!=n.indexOf(&quot;Trident&quot;)||-1!=n.indexOf(&quot;MSIE&quot;),u=-1!=n.indexOf(&quot;Edge&quot;),v=-1!=n.indexOf(&quot;Gecko&quot;)&amp;&amp;!(-1!=n.toLowerCase().indexOf(&quot;webkit&quot;)&amp;&amp;-1==n.indexOf(&quot;Edge&quot;))&amp;&amp;!

iFrame HTML 被缩短了,因为它超过 60,000 个字符,因为 name 属性包含 iframe DOM。

有人知道如何让 Selenium 切换到这些谷歌广告安全框架吗?

最佳答案

我已经能够在 http://express.co.uk/ 上重现问题网站 - 有时,DOM 中会添加一个安全框架。据我了解,问题是当您尝试使用框架 IWebElement 实例或其 idnamePhantomJS 响应 JSON 解析错误。这应该在 PhantomJS issue tracker 报告。 ,因为它与特定的 selenium 语言绑定(bind)无关(我使用了最新的 Python/Selenium - 抛出了同样的错误)。

解决方法:

  • 使用 frame index 切换到框架,对我有用(完整的 Python 代码在 gist 中)。例如,以下是如何切换到 C# 中的第一帧(从零开始的索引):

    driver.SwitchTo().Frame(0);
  • 切换到 FirefoxChrome(您也可以在“headless”模式下运行它们)

关于c# - 切换到 Google Safeframe 广告时出现 JSON 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36403770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com