【发布时间】:2021-05-08 20:34:11
【问题描述】:
所以我一直在使用 Selenium 测试一个网站,特别是一个嵌入了 iframe 的信用卡表单的页面。我想访问所述 iframe 的内容,但由于 CORS,我收到错误消息:
Uncaught DOMException: Blocked a frame with origin "<url>" from accessing a cross-origin frame.
我在 Google 上进行了快速搜索,发现您可以使用“--disable-web-security”标志绕过 CORS,因此我的代码现在如下所示:
options = webdriver.ChromeOptions()
options.add_argument("--disable-web-security")
self.driver = webdriver.Chrome(os.getenv("CHROME_DRIVER"), options=options)
令人惊讶的是,CORS 异常不断出现,我目前正纠结于如何从这里开始。我确实必须访问 iframe 的内容,没有解决方法。
由于我对为什么这不起作用感到困惑,我将问题复制到另一个网站,在本例中是 Amazon,它的功能类似(嵌入 iframe 中的信用卡表单)。我在启用网络安全的情况下运行了代码,并得到了与预期相同的 CORS 错误。但是,正如前面提到的那样,我禁用了网络安全,并且它起作用了!我现在可以访问 iframe。
我还从当前最稳定的 (88) 降级到旧版本的 Chrome (86) 并且没有再发生任何事情。我正在使用 Ubuntu 20.04。
所以现在我想知道 - 为什么该标志不适用于我提到的第一个场景?第一个网站是否有可能强制浏览器的网络安全或相关的东西?我不是网络开发方面的专家,因此对此的任何意见都很有价值。
【问题讨论】:
标签: google-chrome iframe selenium-chromedriver cross-domain