Selnium WebDriver如何克服同源政策

pra*_*jit 2 webdriver

Selenium WebDriver如何克服同一起源政策?

同源政策问题在Selenium RC中

Abh*_*yal 7

首先, 出于安全原因引入了"同源策略",它确保了来自其他站点的脚本永远无法访问您站点的内容.根据该政策,浏览器中加载的任何代码只能在该网站的域内运行.
-------------------------------------------------- ------------------------------- ------------------- ---------------------------
它做了什么???
同源策略禁止JavaScript代码访问与启动时不同的域中的元素.例如,www.google.com中的HTML代码使用JavaScript程序"testScript.js".该同一来源政策只允许 testScript.js访问 google.com内的网页,例如 google.com/mail,google.com/login google.com/signup.但是,它无法访问来自 yahoo.com/search或fbk.com等不同站点的页面,因为它们属于不同的域.

这就是为什么在Selenium RC之前,测试人员需要安装Selenium Core(一个JavaScript程序)的本地副本和包含正在测试的Web应用程序的Web服务器,因此它们属于同一个域.
-------------------------------------------------- -------------------------------------------------- --------------------------------

如何避免???
为了避免使用"同源策略"代理注入方法,在代理注入模式下,Selenium Server充当客户端配置的HTTP代理,它位于浏览器和被测试的应用程序之间,然后在虚构的URL下屏蔽AUT

Selenium使用java脚本来驱动浏览器上的测试; Selenium将自己的js注入到从aut返回的响应中.但是有一个java脚本安全限制(相同的原始策略),只有当js也来自与html相同的域时,才允许你使用js修改页面的html.这种安全限制至关重要,但破坏了Selenium的工作.这是Selenium服务器发挥重要作用的地方.

  • 通俗地说,它只是意味着 Selenium 网络服务器位于浏览器(例如 firefox)和应用程序(正在测试中)之间,例如 www.google.com,并将其屏蔽在一个虚构的 url 下 - 这样它就可以欺骗浏览器,认为两者都是来自同一个网址。因此,允许用户在应用程序上执行自动化任务。换句话说,Selenium 服务器充当 HTTP 代理来“欺骗”浏览器,让其相信 Selenium Core 和正在测试的 Web 应用程序来自同一来源。 (3认同)