dotnet使用Selenium執行自動化任務
如果要做百度文庫,百度貼吧,百度知道簽到,你,會怎麼做?前不久我還會覺得這好像太麻煩了,now,soeasy。
自動化測試工具:Selenium
Selenium是一個用於Web應用程式測試的工具。Selenium測試直接執行在瀏覽器中,就像真正的使用者在操作一樣。支援的瀏覽器包括 ,Chrome,Firefox,IE,PhantomJS(一個基於webkit核心的無介面瀏覽器)等。
- Selenium專案地址:https://github.com/SeleniumHQ/selenium
- Selenium文件地址:http://seleniumhq.github.io/selenium/docs/api/dotnet/
在.net framework下Selenium的使用
- 新建解決方案,控制檯專案
- 新增NuGet包:
Selenium.WebDriver 3.5.1
Selenium.Support 3.5.1
- 通過NuGet下載Phantomjs或者手動下載驅動,設定環境變數
Selenium.PhantomJS.WebDriver
//無頭瀏覽器 無介面Selenium.Chrome.WebDriver
//需要下載瀏覽器 ,執行時會開啟瀏覽器Selenium.Firefox.WebDriver
//需要下載瀏覽器
簡單使用示例
使用PhantomJS驅動儲存百度首頁截圖
var driver = new PhantomJSDriver();//建立瀏覽器
driver.Navigate().GoToUrl("http://www.baidu.com");//開啟百度
//截圖儲存
Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
screenshot.SaveAsFile("baidu.jpg", ScreenshotImageFormat.Jpeg);
//退出
driver.Quit();
點選百度搜尋然後截圖
var driver = new PhantomJSDriver();//建立瀏覽器
driver.Navigate().GoToUrl("http://www.baidu.com");//開啟百度
driver.FindElement(By.Id("kw")).SendKeys("Selenium");
driver.FindElement(By.Id("su")).Click();
Thread.Sleep(3000);//搜尋結果顯示出來再接圖
//截圖儲存
Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
screenshot.SaveAsFile("baidu.jpg", ScreenshotImageFormat.Jpeg);
//退出
driver.Quit();
登入部落格園發個快閃記憶體
原始碼地址:https://coding.net/u/yimocoding/p/WeDemo/git/tree/SeleniumDemo/SeleniumDemo
百度文庫,百度貼吧,百度知道簽到
要是用模擬請求的方式得累死個人。
static void 百度簽到()
{
dynamic loginUser = new
{
UserName = "yimo",
UserPwd = "123456"
};
var myDriver = new PhantomJSDriver();//建立瀏覽器
var defTask = new List<string>() { "文庫", "貼吧", "知道" };
const string _loginUrl = "https://passport.baidu.com/v2/?login";
//跳轉頁面
myDriver.Navigate().GoToUrl(_loginUrl);
myDriver.FindElement(By.Id("TANGRAM__PSP_3__userName")).SendKeys(loginUser.UserName);
myDriver.FindElement(By.Id("TANGRAM__PSP_3__password")).SendKeys(loginUser.UserPwd);
myDriver.FindElement(By.Id("TANGRAM__PSP_3__submit")).Click();
Console.WriteLine(myDriver.Title);
if (defTask.Contains("文庫"))
{
const string _wkSignUrl = "https://wenku.baidu.com/task/browse/daily";
Console.WriteLine($"開始百度文庫簽到");
myDriver.Navigate().GoToUrl(_wkSignUrl);
myDriver.ExecScript("$('.bg').remove();$('.g-btn-pass').click();");
Console.WriteLine("百度文庫簽到完成");
Thread.Sleep(1000);
myDriver.SaveImg("文庫簽到.png");
}
if (defTask.Contains("貼吧"))
{
const string _tiebaUrl = "https://tieba.baidu.com/index.html";
Console.WriteLine("開始百度貼吧簽到");
myDriver.Navigate().GoToUrl(_tiebaUrl);
myDriver.FindElement(By.ClassName("onekey_btn")).Click();
myDriver.FindElement(By.ClassName("sign_btn_nonmember")).Click();
Console.WriteLine("百度貼吧簽到完成");
Thread.Sleep(1000);
myDriver.SaveImg("貼吧簽到.png");
}
if (defTask.Contains("知道"))
{
const string _tiebaUrl = "https://zhidao.baidu.com/";
Console.WriteLine("開始百度知道簽到");
myDriver.Navigate().GoToUrl(_tiebaUrl);
myDriver.FindElement(By.ClassName("go-sign-in")).Click();
myDriver.FindElement(By.ClassName("sign-in-btn")).Click();
Console.WriteLine("百度知道簽到完成");
Thread.Sleep(1000);
myDriver.SaveImg("知道簽到.png");
}
//退出
myDriver.Quit();
}
淘寶領取淘金幣
static void 淘金幣領取()
{
dynamic loginUser = new
{
UserName = "yimo",
UserPwd = "123456"
};
var myDriver = new PhantomJSDriver();//建立瀏覽器
const string _loginUrl = "https://login.taobao.com/member/login.jhtml";
const string _taoUrl = "https://taojinbi.taobao.com/index.htm";
//跳轉頁面
myDriver.Navigate().GoToUrl(_loginUrl);
//賬號登入
myDriver.FindElement(By.Id("J_Quick2Static")).Click();
myDriver.FindElement(By.Id("TPL_username_1")).SendKeys(loginUser.UserName);
myDriver.FindElement(By.Id("TPL_password_1")).SendKeys(loginUser.UserPwd);
myDriver.FindElement(By.Id("J_SubmitStatic")).Click();
myDriver.Navigate().GoToUrl(_taoUrl);
myDriver.FindElement(By.ClassName("J_GoTodayBtn")).Click();
//滑動驗證碼
Actions action = new Actions(driver);
var source = driver.FindElement(By.ClassName("btn_slide"));
if (source == null)
{
return;
}
action.ClickAndHold(source).MoveByOffset(300,0);
action.MoveToElement(source).Release();
IAction actions = action.Build();
actions.Perform();
}
Ctrl+F5,截圖儲存成功
常用介面
var driver=new PhantomJSDriver();//驅動例項
INavigation
介面: 瀏覽器導航介面(前進,後退,重新整理),介面例項:driver.Navigate()
IOptions
介面: 瀏覽器資訊介面(Cookie,設定視窗等操作),介面例項:driver.Manage()
IWebElement
通過driver.FindElement()
篩選獲取到元素資訊(Text等),可以對元素賦值(SendKeys())單擊(Click())等操作
常用操作
- 視窗最大化:
driver.Manage().Window.Maximize();
- Cookie操作介面獲取:
driver.Manage().Cookies
- 執行js:
((IJavaScriptExecutor)driver).ExecuteScript("document.body.innerHTML='Selenium'");
- 截圖:
((ITakesScreenshot)driver).GetScreenshot().SaveAsFile("儲存路徑.png", ScreenshotImageFormat.Png);
-
拖動,文章介紹參考
var driver = new PhantomJSDriver(); By by=By.ClassName("btn_slide"); int x=300,y=0 Actions action = new Actions(driver); var source = driver.FindElement(by); if (source == null) { return; } action.ClickAndHold(source).MoveByOffset(x, y); action.MoveToElement(source).Release(); IAction actions = action.Build(); actions.Perform();
立個flag
下一篇:SeleniumNetCoreDemo+travis-ci+Github
Demo下載:https://coding.net/u/yimocoding/p/WeDemo/git/tree/SeleniumDemo
clone命令:git clone https://git.coding.net/yimocoding/WeDemo.git -b SeleniumDemo
相關文章
- 使用 Bash 自動執行復雜任務
- 自動化運維:使用Maven與Docker執行Selenium測試運維MavenDocker
- [自動化執行]沒用過Ansible,你的自動化任務會考慮用它嗎?
- 如何使用ChatGPT來自動化Python任務ChatGPTPython
- 如何使用 cron 任務在 Linux 中計劃和自動化任務Linux
- 自動化測試框架Selenium的使用——安裝Selenium框架
- 使用gulp編寫常用自動化構建任務
- 使用screen後臺執行任務
- Springboot-之定時任務,啟動執行任務Spring Boot
- python 包之 selenium 自動化使用教程Python
- selenium自動化操作
- 什麼是任務自動化與流程自動化? - infoworld
- Bash、Python和JavaScript哪個指令碼更適合執行自動化任務?- SurangaPythonJavaScript指令碼
- win10 禁止任務自動執行方法 win10自動執行程式怎麼禁止Win10行程
- Browserflow - 在瀏覽器中自動執行重複性任務瀏覽器
- Selenium自動化實現web自動化-1Web
- titans Selenium 自動化框架框架
- selenium自動化測試
- 如何使用WorkManager執行後臺任務(上)
- 使用 Python 和 Selenium 自動化網頁測試Python網頁
- python自動化測試工具selenium使用指南Python
- 使用Selenium自動化測試SAP CRM WebClient UIWebclientUI
- 全網最全python庫selenium自動化使用教程Python
- Spring Boot使用執行緒池處理事務任務Spring Boot執行緒
- 分享一個在 Jenkins 中執行 Selenium 自動化測試的教程視訊Jenkins
- 如何使用cron任務每隔2天在固定時間執行任務
- .net使用Task多執行緒執行任務 .net限制執行緒數量執行緒
- Selenium+Java+TestNG進行web自動化測試JavaWeb
- Selenium自動化測試(3)
- 驚!Laravel自帶執行定時任務的命令,只推薦本地使用Laravel
- 180628-動態任務執行框架想法篇框架
- Selenium用法詳解 - - selenium自動化測試概要
- Jenkins Android APP 持續整合體系建設二—自動部署、執行測試任務,關聯打包任務JenkinsAndroidAPP
- python自動化指令碼例項100條-自動化運維基礎例項解析-Python批量登入到伺服器執行任務...Python指令碼運維伺服器
- 微任務和巨集任務哪個先執行
- 同步任務與非同步任務執行順序非同步
- laravel框架任務排程(定時執行任務)Laravel框架
- 怎樣開始用selenium進行自動化測試?
- java+selenium 自動化測試Java