2015-09-30 73 views
1

Selenium WebDriver如何克服相同的源策略?Selnium WebDriver如何克服同源策略

同源策略的問題是硒RC

+0

考慮澄清你面臨的問題......請注意,硒本身並不真正受同源政策的控制... –

+0

嗨,我只是想知道selenium Webdriver如何克服這個問題,意味着它有任何新的架構模型或者是什麼 ? – prasannajit

回答

4

介紹了一種安全原因,所有「同源策略」首先,它可以確保你的網站的內容將不會被從腳本進行訪問另一個網站。根據政策,瀏覽器中加載的任何代碼只能在該網站的域中運行。
------------------------------------------------ --------------------------------- ----------------- -----------------------------
它做了什麼?
同源策略禁止JavaScript代碼訪問來自與啓動位置不同的域中的元素。例如,www.google.com中的HTML代碼使用JavaScript程序「testScript.js」。該同源策略將只允許testScript.js內訪問頁面google.comgoogle.com/mail,google.com/login,google.com/signup。但是,它不能訪問來自不同站點的頁面,例如yahoo.com/search或fbk.com,因爲它們屬於不同的域。

這就是爲什麼在Selenium RC之前,測試人員需要安裝Selenium Core(一個JavaScript程序)和包含正在測試的Web應用程序的Web服務器的本地副本,以便它們屬於同一個域。
------------------------------------------------- -------------------------------------------------- ---------------------------------

如何避免?
爲了避免「同源策略」代理注入方法時,在代理注入模式中的Selenium服務器作爲客戶端配置的HTTP代理,測試下的瀏覽器和應用程序之間的它位於然後掩模AUT在虛構的URL下

Selenium使用java腳本在瀏覽器上驅動測試; Selenium將它自己的js注入從aut返回的響應中。但有一個Java腳本安全限制(同源策略)它允許您修改使用js的頁面的html只有當js也源自與html相同的域。這個安全限制是非常重要的,但會損害Selenium的工作。這是Selenium服務器發揮重要作用的地方。

+0

嗨阿布舍克,我不明白「如何避免」部分。你可以用一些例子來解釋一下嗎? – prasannajit

+0

通俗地說,它僅僅意味着Selenium網絡服務器位於瀏覽器,例如firefox和應用程序(正在測試中),例如www.google.com,並將其掩蓋在一個虛構的網址之下 - 這樣就可以欺騙瀏覽器都起源於相同的網址。因此允許用戶在應用程序上執行自動化任務。換句話說,Selenium服務器充當HTTP代理來「欺騙」瀏覽器,使其相信Selenium Core和被測試的Web應用程序來自同一個來源。 –

+1

明白了。謝謝你 – prasannajit

1

在Selenium WebDriver之前,Selenium是「Javascript Task Runner」。它會將自己設置爲服務器(本地),並打開指向本地運行的Selenium服務器的瀏覽器。因此,瀏覽器現在正在與本地運行的Selenium服務器交談。

雖然這是一個問題,因爲瀏覽器正在從Selenium獲取一個腳本,告訴它它想要從http://websitetotest.com獲取資源。但是瀏覽器從http://127.0.0.1:9000/selenium(例如)獲得了這個腳本。瀏覽器說:「嘿,這個腳本從本地主機來了,現在它的要求從某些外網站的資源。這違反了同源策略。webdriver的走過來,創造了一個代理欺騙瀏覽器,使其思維

它與Selenium和websitetotest所在的同一服務器通信,Abhishek對此提供了一個簡明的解釋。

0

這可能是一個遲到的回覆,但是,如果您指的是selenium webdriver而不是selenium RC那麼答案是你不必擔心在webdriver的情況下同樣的起源政策,因爲每個瀏覽器都有自己的webdriver。這是webdriver的全部優點,而不是RC,即沒有硒核心注入瀏覽器和AUT之間沒有中間件客戶端服務器.Webdriver在控制瀏覽器自動化方面提供本機操作系統級支持。