C#使用Selenium的实现代码

 更新时间:2020年03月18日 10:09:41   作者:zhaotianff  
这篇文章主要介绍了C#使用Selenium的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

介绍:

Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。

利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码 ,做到可见即可爬。

所以Selenium现在被广泛用于Python爬虫。查了下资料,发现这个工具确实强大,最重要的是,C#也是可以调用的。

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

Selenium使用Java开发,项目地址https://github.com/SeleniumHQ/selenium

使用Selenium:

1、我们新建一个C#控制台程序

2、使用Nuget搜索以下依赖库

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

然后再需要引用 浏览器驱动库,这里我以IE浏览器为例,Chrome使用方式跟IE是一样的,程序包名称为Selenium.WebDriver.ChromeDriver。

3、在Main函数中输入以下代码

static void Main(string[] args)
    {
      using (IWebDriver driver = new OpenQA.Selenium.IE.InternetExplorerDriver())
      {
        driver.Navigate().GoToUrl("http://www.baidu.com"); //driver.Url = "http://www.baidu.com"是一样的

        var source = driver.PageSource;

        Console.WriteLine(source);
      }
    }

运行,会弹出IE浏览器,网页加载完成后,浏览器会自动关闭。控制台输入结果如下

这样我们就可以轻松的获取动态渲染页面的源码。

基本用法:

这里我以https://technet-info.com/Main.aspx这个页面来演示。

页面源码如下

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<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>
  Welcome To Technet-Info : Personal Gallery
</title><link rel="shortcut icon" type="image/x-icon" href="technet.ico" rel="external nofollow" media="screen" /><link rel="stylesheet" href="Css/MainCss.css" rel="external nofollow" /><link rel="stylesheet" href="Css/screen.css" rel="external nofollow" />
  <style>
    #footer{
      display: flex;
      justify-content: center;
      align-items: center;
      position: fixed;
      bottom: 0;
      left: 0;
      width: 100%;
    }
  </style>
  <script type="text/javascript" src="js/jquery.js"></script>
  <script type="text/javascript" src="js/easySlider1.7.js"></script>  
  <script type="text/javascript">
    $(document).ready(function () {
      $("#slider").easySlider({
        auto: true,
        pause:3000,
        continuous: true,
        numeric: true
      });
    });   
  </script>
</head>
<body>
  <form method="post" action="./Main.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTQyNjI2MTkwNmRkt331eyucv2SBluj0E2d+0haGV4exFHWtGQkZhNBnpHE=" />
</div>

<div class="aspNetHidden">

  <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="202EA31B" />
</div>
    <div id="main">
      <div id="header">
        <div class="musicarea">
          
          <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>
        </div>
        <div class="content">
          
          <div class="logo">
            
            <div class="logo_img">
              <div class="logo_img"></div>
            </div>
            
            <div class="logo_txt">
              <div style="height: 50px;">
                <p></p>
              </div>
              <div style="height: 50px;">
                <p>我的freetime</p>
              </div>
            </div>
          </div>


          
          <div class="menu">
            
        </div>
      </div>
      
      <div id="content">
        
        
        </div>
                
        <div id="cards">
            
          </div>
        <div id="pin">
          
        </div>

      </div>
      
      <div id="footer">
        <div id="copyright">
          <p style="margin: 3px">
            <a href="http://www.miitbeian.gov.cn/" rel="external nofollow" >湘ICP备16012349号</a>
            <span>|</span>
            <span>Copyright © 2016, www.technet-info.com, All rights reserved.</span>
          </p>
          <p><a href="mailto:zhaotianff@163.com" rel="external nofollow" >Email:zhaotianff@163.com</a></p>
        </div>
      </div>
    </div>
  </form>
</body>
</html>

通过id获取元素

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

通过类名获取元素

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

通过标签名获取元素

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

通过名字获取元素

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

通过链接文本获取元素

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

通过部分链接文本获取元素

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

通过CSS选择器获取元素

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

通过XPath来获取元素(XPath使用可以参考上一篇博客)

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

执行JS

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

获取元素的值和属性

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

模拟鼠标点击元素

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

页面导航

//Navigation
driver.Navigate().Forward();
driver.Navigate().Back();

拖拽操作(可以实现滑动验证码的验证)

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

示例代码

到此这篇关于C#使用Selenium的实现代码的文章就介绍到这了,更多相关C#使用Selenium内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#泛型约束的深入理解

    C#泛型约束的深入理解

    本篇文章是对C#中的泛型约束进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#实现如何使用短信平台自动通知用户实例

    C#实现如何使用短信平台自动通知用户实例

    这篇文章主要介绍了C#实现如何使用短信平台自动通知用户实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • C#集合遍历时删除和增加元素的方法

    C#集合遍历时删除和增加元素的方法

    这篇文章主要介绍了C#集合遍历时删除和增加元素的方法,结合实例形式分析了C#针对集合元素的遍历、添加与删除等操作实现方法与注意事项,需要的朋友可以参考下
    2016-06-06
  • Unity实现人物旋转和移动效果

    Unity实现人物旋转和移动效果

    这篇文章主要为大家详细介绍了Unity实现人物旋转和移动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • c#多线程程序设计实例方法

    c#多线程程序设计实例方法

    在本篇文章里小编给大家分享了关于c#多线程程序设计实例步骤,需要的朋友们学习参考下。
    2019-02-02
  • C#实现多线程下载文件的方法

    C#实现多线程下载文件的方法

    这篇文章主要介绍了C#实现多线程下载文件的方法,实例分析了C#多线程及文件传输的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • 使用Topshelf框架操作Windows服务

    使用Topshelf框架操作Windows服务

    这篇文章介绍了使用Topshelf框架操作Windows服务的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#学习笔记- 浅谈数组复制,排序,取段,元组

    C#学习笔记- 浅谈数组复制,排序,取段,元组

    下面小编就为大家带来一篇C#学习笔记- 浅谈数组复制,排序,取段,元组。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • C#小数点格式化用法小结

    C#小数点格式化用法小结

    这篇文章主要介绍了C#小数点格式化用法,结合实例形式分析了C#小数点格式化运算的常用函数与相关使用技巧,需要的朋友可以参考下
    2016-08-08
  • c#方法重写和隐藏的学习示例

    c#方法重写和隐藏的学习示例

    最近正在学习c#,对其中的方法重写和隐藏的概念很是模糊,现在将其归纳如下供大家参考
    2014-01-01

最新评论