下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第selenium.chrome寫(xiě)擴(kuò)展攔截或轉(zhuǎn)發(fā)請(qǐng)求功能目錄Selenium.WebDrivernuget開(kāi)始coding寫(xiě)selenium.chrome插件使用方法實(shí)現(xiàn)效果
Selenium.WebDriver
SeleniumWebDriver是一組開(kāi)源API,用于自動(dòng)測(cè)試Web應(yīng)用程序,利用它可以通過(guò)代碼來(lái)控制chrome瀏覽器!
有時(shí)候我們需要mock接口的返回,或者攔截和轉(zhuǎn)發(fā)請(qǐng)求,今天就來(lái)實(shí)現(xiàn)這個(gè)功能
代碼已開(kāi)源:/yuzd/OpenQA.Selenium.Chrome.Fiddler
nuget
OpenQA.Selenium.Chrome.Fiddler
開(kāi)始coding
我們新創(chuàng)建一個(gè)功能:OpenQA.Selenium.Chrome.Fiddler
一個(gè)chrome擴(kuò)展最起碼有2個(gè)文件
manifest.json
background.js
稍微解釋一下:
manifest.json是來(lái)描述chrome擴(kuò)展的
{
"version":"1.0.0",
"manifest_version":2,
"name":"ChromeFiddler",
"permissions":[
"proxy",
"tabs",
"unlimitedStorage",
"storage",
"all_urls",
"webRequest",
"webRequestBlocking"
"background":{
"scripts":["background.js"]
"minimum_chrome_version":"22.0.0"
}
background.js是邏輯處理模塊
因?yàn)閿r截api或者轉(zhuǎn)發(fā)需要用的chrome的api
chrome.webRequest.onBeforeRequest.addListener(
function(details){
//邏輯處理
{urls:['all_urls']},
['blocking','extraHeaders','requestBody']
);
這個(gè)api的函數(shù)接收的details參數(shù)
details.url是api的接口
函數(shù)的返回
{cancel:true}攔截請(qǐng)求{redirectUrl:}轉(zhuǎn)發(fā)到指定url
寫(xiě)selenium.chrome插件
新建一個(gè)netstand工程,然后引用
Selenium.WebDriver
復(fù)制以下代碼
///summary
///AddFiddlerextention
////summary
///paramname="options"Chromeoptions/param
///paramname="fiddlerOption"Proxyhost/param
publicstaticvoidAddFiddler(thisChromeOptionsoptions,FiddlerOptionfiddlerOption)
varbackgroundProxyJs=ReplaceTemplates(background_js,fiddlerOption);
if(!Directory.Exists("Plugins"))
Directory.CreateDirectory("Plugins");
varguid=Guid.NewGuid().ToString();
varmanifestPath=$"Plugins/manifest_{guid}.json";
varbackgroundPath=$"Plugins/background_{guid}.js";
vararchiveFilePath=$"Plugins/proxy_auth_plugin_{guid}.zip";
File.WriteAllText(manifestPath,manifest_json);
File.WriteAllText(backgroundPath,backgroundProxyJs);
using(varzip=ZipFile.Open(archiveFilePath,ZipArchiveMode.Create))
zip.CreateEntryFromFile(manifestPath,"manifest.json");
zip.CreateEntryFromFile(backgroundPath,"background.js");
File.Delete(manifestPath);
File.Delete(backgroundPath);
options.AddExtension(archiveFilePath);
privatestaticstringReplaceTemplates(stringstr,FiddlerOptionfiddlerOption)
if(fiddlerOption.OnBeforeRequestOptions!=null)
varbeforeConfigs=Newtonsoft.Json.JsonConvert.SerializeObject(fiddlerOption.OnBeforeRequestOptions);
str=str.Replace("{before_configs}",beforeConfigs);
returnstr;
}
上面的代碼主要是創(chuàng)建一個(gè)chrome擴(kuò)展zip包
然后再selenium.chrome啟動(dòng)的時(shí)候傳進(jìn)去這個(gè)zip包的地址
使用方法
vardriverBinary=@"D:\soft\chrome\chrome2\Chrome-bin\";
ChromeOptionsoptions=newChromeOptions
BinaryLocation=Path.Combine(driverBinary,"chrome.exe")
Environment.SetEnvironmentVariable("webdriver.chrome.driver",driverBinary);
options.AddArgument("--disable-blink-features=AutomationControlled");
options.AddArguments("--disable-infobars");
Liststringls=newListstring{"enable-automation"};
options.AddExcludedArguments(ls);
#regionFillder
options.AddFiddler(newFiddlerOption
OnBeforeRequestOptions=newListFiddlerOnBeforeRequestOptions
//配置轉(zhuǎn)發(fā)
newFiddlerOnBeforeRequestOptions
Match="/yudongdong/ajax/GetPostStat",//正則
RedirectUrl="http://localhost:5000/GetPostStat",//如果匹配成功則將requestBody轉(zhuǎn)發(fā)到這個(gè)url中去
Cancel=false//如果配置了cancel=true那么轉(zhuǎn)發(fā)將無(wú)效,true的意思是直接攔截這次的請(qǐng)求,不去發(fā)送了
//配置攔截
newFiddlerOn
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026秋招:香馳控股公司試題及答案
- 2025年研學(xué)基地環(huán)境保護(hù)責(zé)任協(xié)議
- 旅游線路開(kāi)發(fā)合作合同協(xié)議2025年方案
- 跨境電商數(shù)據(jù)隱私保護(hù)合同2025年條款
- 2026年蔬菜市場(chǎng)推廣合同協(xié)議
- 員工陽(yáng)光心態(tài)培訓(xùn)
- 員工返崗培訓(xùn)課件
- 倉(cāng)庫(kù)培訓(xùn)資料大全
- 倉(cāng)庫(kù)培訓(xùn)人員質(zhì)檢
- 員工電腦基礎(chǔ)知識(shí)培訓(xùn)
- 2026年及未來(lái)5年市場(chǎng)數(shù)據(jù)中國(guó)集裝箱物流行業(yè)市場(chǎng)發(fā)展數(shù)據(jù)監(jiān)測(cè)及投資戰(zhàn)略規(guī)劃報(bào)告
- 七年級(jí)地理下冊(cè)(人教版)東半球其他的國(guó)家和地區(qū)-歐洲西部自然環(huán)境教學(xué)設(shè)計(jì)
- 口腔現(xiàn)場(chǎng)義診培訓(xùn)
- 學(xué)校中層管理崗位職責(zé)及分工明細(xì)(2026年版)
- 江蘇省南京市六校聯(lián)合體2026屆高一數(shù)學(xué)第一學(xué)期期末監(jiān)測(cè)試題含解析
- 就業(yè)部門(mén)內(nèi)控制度
- 2026屆江蘇省徐州市侯集高級(jí)中學(xué)高一上數(shù)學(xué)期末復(fù)習(xí)檢測(cè)試題含解析
- 飛行固模課件
- 2026中國(guó)電信四川公司校園招聘?jìng)淇碱}庫(kù)附答案
- 住院患者安全告知
- 2025年山東省濟(jì)南市中考地理試題(含答案)
評(píng)論
0/150
提交評(píng)論