小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C#使用Selenium

 黃金屋1 2019-12-11

介紹:

Selenium 是一個(gè)用于Web應(yīng)用程序測(cè)試的工具。Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。

利用它可以驅(qū)動(dòng)瀏覽器執(zhí)行特定的動(dòng)作,如點(diǎn)擊、下拉等操作,同時(shí)還可以獲取瀏覽器當(dāng)前呈現(xiàn)的頁面的源代碼 ,做到可見即可爬。  

所以Selenium現(xiàn)在被廣泛用于Python爬蟲。查了下資料,發(fā)現(xiàn)這個(gè)工具確實(shí)強(qiáng)大,最重要的是,C#也是可以調(diào)用的。

官方支持Java,C#,Python,Ruby,PHP,Perl,Javascript等語言

Selenium使用Java開發(fā),項(xiàng)目地址 https://github.com/SeleniumHQ/selenium

 

使用Selenium:

1、我們新建一個(gè)C#控制臺(tái)程序

2、使用Nuget搜索以下依賴庫

需要引用的核心庫是Selenium.RC,Selenium.Support,Selenium.WebDriver

 

然后再需要引用 瀏覽器驅(qū)動(dòng)庫,這里我以IE瀏覽器為例,Chrome使用方式跟IE是一樣的,程序包名稱為Selenium.WebDriver.ChromeDriver。

 

3、在Main函數(shù)中輸入以下代碼

 

復(fù)制代碼
 1 static void Main(string[] args)
 2         {
 3             using (IWebDriver driver = new OpenQA.Selenium.IE.InternetExplorerDriver())
 4             {
 5                 driver.Navigate().GoToUrl("http://www.baidu.com");  //driver.Url = "http://www.baidu.com"是一樣的
 6 
 7                 var source = driver.PageSource;
 8 
 9                 Console.WriteLine(source);
10             }
11         }
復(fù)制代碼

 

運(yùn)行,會(huì)彈出IE瀏覽器,網(wǎng)頁加載完成后,瀏覽器會(huì)自動(dòng)關(guān)閉??刂婆_(tái)輸入結(jié)果如下

這樣我們就可以輕松的獲取動(dòng)態(tài)渲染頁面的源碼。

 

 基本用法:

這里我以https:///Main.aspx這個(gè)頁面來演示。

頁面源碼如下

復(fù)制代碼
 1 <!DOCTYPE html>
 2 
 3 <html xmlns="http://www./1999/xhtml">
 4 <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="description" content="Wandering the number of windows, stayed in the number of hotels, will feel that separation is not wronged, the feelings are used to browse or used to collect, so that the day had a memorable day" /><title>
 5     Welcome To Technet-Info : Personal Gallery
 6 </title><link rel="shortcut icon" type="image/x-icon" href="technet.ico" media="screen" /><link rel="stylesheet" href="Css/MainCss.css" /><link rel="stylesheet" href="Css/screen.css" />
 7     <style>
 8         #footer{
 9             display: flex;
10             justify-content: center;
11             align-items: center;
12             position: fixed;
13             bottom: 0;
14             left: 0;
15             width: 100%;
16         }
17     </style>
18     <script type="text/javascript" src="js/jquery.js"></script>
19     <script type="text/javascript" src="js/easySlider1.7.js"></script>   
20     <script type="text/javascript">
21         $(document).ready(function () {
22             $("#slider").easySlider({
23                 auto: true,
24                 pause:3000,
25                 continuous: true,
26                 numeric: true
27             });
28         });     
29     </script>
30 </head>
31 <body>
32     <form method="post" action="./Main.aspx" id="form1">
33 <div class="aspNetHidden">
34 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTQyNjI2MTkwNmRkt331eyucv2SBluj0E2d+0haGV4exFHWtGQkZhNBnpHE=" />
35 </div>
36 
37 <div class="aspNetHidden">
38 
39     <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="202EA31B" />
40 </div>
41         <div id="main">
42             <div id="header">
43                 <div class="musicarea">
44                     
45                     <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=150 height=52 src="http://music.163.com/outchain/player?type=0&id=516657278&auto=1&height=32"></iframe>
46                 </div>
47                 <div class="content">
48                     
49                     <div class="logo">
50                         
51                         <div class="logo_img">
52                             <div class="logo_img"></div>
53                         </div>
54                         
55                         <div class="logo_txt">
56                             <div style="height: 50px;">
57                                 <p></p>
58                             </div>
59                             <div style="height: 50px;">
60                                 <p>我的freetime</p>
61                             </div>
62                         </div>
63                     </div>
64 
65 
66                     
67                     <div class="menu">
68                         
69                 </div>
70             </div>
71             
72             <div id="content">
73                 
74                 
75                 </div>
76                                
77                 <div id="cards">
78                         
79                     </div>
80                 <div id="pin">
81                     
82                 </div>
83 
84             </div>
85             
86             <div id="footer">
87                 <div id="copyright">
88                     <p style="margin: 3px">
89                         <a href="http://www./">湘ICP備16012349號(hào)</a>
90                         <span>|</span>
91                         <span>Copyright ? 2016, www., All rights reserved.</span>
92                     </p>
93                     <p><a href="mailto:zhaotianff@163.com">Email:zhaotianff@163.com</a></p>
94                 </div>
95             </div>
96         </div>
97     </form>
98 </body>
99 </html>
復(fù)制代碼

通過id獲取元素

1 //by id
2 var byID = driver.FindElement(By.Id("cards"));

 

通過類名獲取元素

1 //by class name
2 var byClassName = driver.FindElements(By.ClassName("menu"));

 

通過標(biāo)簽名獲取元素

1 //by tag name 
2 var byTagName = driver.FindElement(By.TagName("iframe"));

 

通過名字獲取元素

1 var byName = driver.FindElement(By.Name("__VIEWSTATE"));

 

通過鏈接文本獲取元素

1 //by linked text  
2 //<a href="http://www.google.com">linkedtext</a>>  
3 var byLinkText = driver.FindElement(By.LinkText("linkedtext"));

 

通過部分鏈接文本獲取元素

1 //by partial link text
2 //<a href="http://www.google.com">linkedtext</a>>
3 var byPartialLinkText = driver.FindElement(By.PartialLinkText("text"));

 

通過CSS選擇器獲取元素

1 //by css
2 var byCss = driver.FindElement(By.CssSelector("#header .content .logo"));

 

通過XPath來獲取元素(XPath使用可以參考上一篇博客)

1  //by xpath
2  var byXPath = driver.FindElements(By.XPath("//div"));

 

執(zhí)行JS

1 //execute javascript
2 var jsReturnValue = (IWebElement)((IJavaScriptExecutor)driver).ExecuteScript("jsfunname");

 

獲取元素的值和屬性

1 //get element value and attribute value
2 var byIDText = byID.Text;
3 var byIDAttributeText = byID.GetAttribute("id");

 

模擬鼠標(biāo)點(diǎn)擊元素

1  //click
2  driver.FindElement(By.Id("copyright")).Click();

 

頁面導(dǎo)航 

1 //Navigation
2 driver.Navigate().Forward();
3 driver.Navigate().Back();

 

拖拽操作(可以實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼的驗(yàn)證)

1 //Drag And Drop
2 var element = driver.FindElement(By.Name("source"));
3 IWebElement target = driver.FindElement(By.Name("target"));
4 (new Actions(driver)).DragAndDrop(element, target).Perform();

 

示例代碼

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多