日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

dotnet使用Selenium執(zhí)行自動化任務(wù)

 昵稱56559370 2018-10-12

如果要做百度文庫,百度貼吧,百度知道簽到,你,會怎么做?前不久我還會覺得這好像太麻煩了,now,soeasy。

自動化測試工具:Selenium

Selenium是一個(gè)用于Web應(yīng)用程序測試的工具。Selenium測試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括 ,Chrome,Firefox,IE,PhantomJS(一個(gè)基于webkit內(nèi)核的無界面瀏覽器)等。

在.net framework下Selenium的使用

  1. 新建解決方案,控制臺項(xiàng)目
  2. 添加NuGet包:Selenium.WebDriver 3.5.1 Selenium.Support 3.5.1
  3. 通過NuGet下載Phantomjs或者手動下載驅(qū)動,設(shè)置環(huán)境變量
    • Selenium.PhantomJS.WebDriver //無頭瀏覽器 無界面
    • Selenium.Chrome.WebDriver //需要下載瀏覽器 ,運(yùn)行時(shí)會打開瀏覽器
    • Selenium.Firefox.WebDriver //需要下載瀏覽器
      圖片

簡單使用示例

使用PhantomJS驅(qū)動保存百度首頁截圖

    var driver = new PhantomJSDriver();//創(chuàng)建瀏覽器
    driver.Navigate().GoToUrl("http://www.baidu.com");//打開百度
    //截圖保存
    Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
    screenshot.SaveAsFile("baidu.jpg", ScreenshotImageFormat.Jpeg);
    //退出
    driver.Quit();

點(diǎn)擊百度搜索然后截圖

    var driver = new PhantomJSDriver();//創(chuàng)建瀏覽器
    driver.Navigate().GoToUrl("http://www.baidu.com");//打開百度
    driver.FindElement(By.Id("kw")).SendKeys("Selenium");
    driver.FindElement(By.Id("su")).Click();
    Thread.Sleep(3000);//搜索結(jié)果顯示出來再接圖
    //截圖保存
    Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
    screenshot.SaveAsFile("baidu.jpg", ScreenshotImageFormat.Jpeg);
    //退出
    driver.Quit();

登錄博客園發(fā)個(gè)閃存

源碼地址:https:///u/yimocoding/p/WeDemo/git/tree/SeleniumDemo/SeleniumDemo

百度文庫,百度貼吧,百度知道簽到

要是用模擬請求的方式得累死個(gè)人。

  static void 百度簽到()
  {
      dynamic loginUser = new
      {
          UserName = "yimo",
          UserPwd = "123456"
      };
      var myDriver = new PhantomJSDriver();//創(chuàng)建瀏覽器
      var defTask = new List<string>() { "文庫", "貼吧", "知道" };
      const string _loginUrl = "https://passport.baidu.com/v2/?login";
      //跳轉(zhuǎn)頁面
      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();
  }

淘寶領(lǐng)取淘金幣

  static void 淘金幣領(lǐng)取()
  {
      dynamic loginUser = new
      {
          UserName = "yimo",
          UserPwd = "123456"
      };
      var myDriver = new PhantomJSDriver();//創(chuàng)建瀏覽器
      const string _loginUrl = "https://login.taobao.com/member/login.jhtml";
      const string _taoUrl = "https://taojinbi.taobao.com/index.htm";
      //跳轉(zhuǎn)頁面
      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();
      //滑動驗(yàn)證碼
      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();//驅(qū)動實(shí)例

  1. INavigation接口: 瀏覽器導(dǎo)航接口(前進(jìn),后退,刷新),接口實(shí)例:driver.Navigate()
  2. IOptions接口: 瀏覽器信息接口(Cookie,設(shè)置窗口等操作),接口實(shí)例:driver.Manage()
  3. IWebElement 通過driver.FindElement()篩選獲取到元素信息(Text等),可以對元素賦值(SendKeys())單擊(Click())等操作

常用操作

  • 窗口最大化:driver.Manage().Window.Maximize();
  • Cookie操作接口獲取:driver.Manage().Cookies
  • 執(zhí)行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();

立個(gè)flag

下一篇:SeleniumNetCoreDemo+travis-ci+Github
Demo下載:https:///u/yimocoding/p/WeDemo/git/tree/SeleniumDemo
clone命令:git clone https://git./yimocoding/WeDemo.git -b SeleniumDemo

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多