我试图列出iframe
页面中所有s 的名称,以便可以通过Selenium访问它们。
问题在于iframe
每次更改的名称,因此我需要遍历所有这些更改。
我正进入(状态:
未捕获的DOMException:阻止了源为“ http:// localhost:8080
”的框架访问跨域框架。
当我尝试使用以下方法遍历它们时出错:
for (var f = 0; f < window.frames.length; f++) {
console.log(window.frames[f].name)
}
有没有办法以其他方式获得名称iframe
?
此错误消息…
Uncaught DOMException: Blocked a frame with origin "http://localhost:8080" from accessing a cross-origin frame.
…意味着 WebDriver 实例 被阻止 访问跨域框架。
同源策略 :同源策略限制从一个来源加载的文档或脚本如何与另一个来源的资源进行交互。它是隔离潜在恶意文档的 关键安全机制 。
跨域资源共享(CORS)
:跨域资源共享(CORS)是一种机制,该机制使用其他 HTTP标头来 告诉 浏览器客户端 让在一个来源(域)运行的 AUT(被测应用程序
)具有访问权限从不同来源的服务器中选择资源。一个Web应用程序进行 跨域HTTP请求
时,它要求具有不同的原点(资源domain
,protocol
和port
)比它自己的起源。
这是URL的来源比较示例 http://store.company.com/dir/page.html
URL Outcome Reason
http://store.company.com/dir2/other.html Success
http://store.company.com/dir/inner/another.html Success
https://store.company.com/secure.html Failure Different protocol
http://store.company.com:81/dir/etc.html Failure Different port
http://news.company.com/dir/other.html Failure Different host
当您尝试遍历frames
脚本/程序时,尝试<iframe>
使用JavaScript 访问具有不同来源的脚本/程序,如果能够实现,将是一个巨大的
安全漏洞 。如上所述, 同源策略 浏览器会阻止试图访问<iframe>
源不同的脚本。
如果两个网页的 协议 , 端口 (如果指定了一个)和 主机 相同,则两个页面的来源相同。您有时会看到它称为
"scheme/host/port tuple"
“时间”(其中“元组”是三个组成一个整体的组件的集合)。或许 协议 , 域名
, 主机名 和 端口 ,当你想访问所需的框架必须是同你同一个域。
所述 AUT 可能包含众多 帧 / 内部框架 和其中一些可能只有在某些加载 的JavaScript / Ajax的
已完成,其中作为它们中的一些可以具有 样式 属性集为 显示:无; 或 可视性 为 隐藏
。当然,不需要与所有人互动。因此,这将是识别和相应切换 属性 的更好方法<iframe>
。您可以<iframe>
通过以下方式切换到:
Frame Name
Frame ID
Frame Index
WebElement
按照 最佳做法, 当你的意图切换到框架诱导
WebDriverWait
为
frameToBeAvailableAndSwitchToIt 按照下面的引用。
问题内容: 我试图列出iframe页面中所有s 的名称,以便可以通过Selenium访问它们。 问题在于iframe每次更改的名称,因此我需要遍历所有这些更改。 我正进入(状态: 未捕获到的DOMException:阻止了起源为“ http:// localhost:8080 ”的框架访问跨域框架。 当我尝试使用以下方法遍历它们时出错: 有没有办法以其他方式获得名称iframe? 问题答案: 此错
我正在尝试列出页面中所有 的名称,以便我可以通过 Selenium 访问它们。 问题是的名称每次都会更改,因此我需要循环遍历所有这些名称。 我得到: 未捕获的DOMException:阻止了具有原点的帧“http://localhost:8080“访问交叉原点框架。 当我尝试使用以下命令循环遍历它们时出错: 有没有办法以不同的方式获取 的名称?
问题内容: 我正在HTML页面中加载,并尝试使用Javascript访问其中的元素,但是当我尝试执行代码时,出现以下错误: 您能否帮助我找到解决方案,以便我可以访问框架中的元素? 我正在使用此代码进行测试,但徒劳无功: 问题答案: 同源政策 您无法使用JavaScript访问其他来源的内容,如果可以的话,这将是一个巨大的安全漏洞。对于同源策略,浏览器会阻止脚本尝试访问来源不同的框架。 如果未保留地
我已经为我的站点使用了mautic时事通讯。 下面是我的代码。 这是我的 当我尝试提交时,控制台上显示以下错误: app.js:190未捕获的DOM异常:阻止原点为“https://resources.incarta.com.au”的帧访问跨原点帧。
当我放入allog-same-orgin时,它可以工作,但当我移除它时,我有: 阻止来源为“http://localhost:****”的帧访问跨来源的帧。 iframe src: 端口是相同的,我需要避免允许cookie安全来源相同