c++浏览器自动化操作_精:C# 利用Selenium实现浏览器自动化操作

本文介绍了如何利用C#结合Selenium进行浏览器自动化操作,涉及Selenium安装、核心代码展示,并提供了一个使用Chrome浏览器监控网站的示例。通过ID和XPath定位网页元素,实现内容填充和事件触发。
摘要由CSDN通过智能技术生成

概述

Selenium是一款免费的分布式的自动化测试工具,支持多种开发语言,无论是C、 java、ruby、python、或是C# ,你都可以通过selenium完成自动化测试。本文以一个简单的小例子,简述C# 利用Selenium进行浏览器的模拟操作,仅供学习分享使用,如有不足之处,还请指正。

涉及知识点

要实现本例的功能,除了要掌握Html ,JavaScript,CSS等基础知识,还涉及以下知识点:

  • log4net:主要用于日志的记录和存储,本例采用log4net进行日志记录,便于过程跟踪和问题排查,关于log4net的配置和介绍,之前已有说明,本文不做赘述。

  • Queue:队列,先进先出模式,本文主要用于将日志信息保存于队列中,然后再显示到页面上,其中Enqueue用于添加内容到结尾处,Dequeue用于返回并移除一个位置的对象。

  • IWebDriver:浏览器驱动接口,所有的关于浏览器的操作都可以通过此接口进行,不同浏览器有不同的实现类,如:IE浏览器(InternetExplorerDriver)Chrome浏览器(ChromeDriver)等。

  • BackgroundWorker:后台工作线程,区别于主线程,通过事件触发不同的状态。

Selenium安装

本例开发工具为VS2019,通过NuGet进行需要的软件包的安装与管理,如下所示:

932540570ee50dcca113ad52bdcb48d6.png

示例效果图

本例采用Chrome浏览器,用于监控某一个网站并获取相应内容,如下所示:

0b2e728a9f011cb9857a97bf1aa90b26.png

Selenium示例介绍

定义一个webDriver,如下所示:

1 //谷歌浏览器2 ChromeOptions options = new ChromeOptions();3 this.driver = new ChromeDriver(options);

通过ID获取元素并填充内容和触发事件,如下所示:

1 this.driver.FindElement(By.Id("email")).SendKeys(username);2 this.driver.FindElement(By.Id("password")).SendKeys(password);3 //# 7. 点击登录按钮4 this.driver.FindElement(By.Id("sign-in")).Click();

通过XPath获取元素,如下所示:

1 string xpath1 = "//div[@class=\"product-list\"]/div[@class=\"product\"]/div[@class=\"price-and-detail\"]/div[@class=\"price\"]/span[@class=\"noStock\"]";2 string txt = this.driver.FindElement(By.XPath(xpath1)).Text;

核心代码

主要的核心代码,就是浏览器的元素定位查找和事件触发,如下所示:

18d4369a210a97d1c771fdb60d66dc65.png

e8f7509196301229ae2014c0fad1d06b.png

  1 using OpenQA.Selenium;  2 using OpenQA.Selenium.IE;  3 using OpenQA.Selenium.Chrome;  4 using System;  5 using System.Collections.Generic;  6 using System.Linq;  7 using System.Text;  8 using System.Threading;  9 using System.Threading.Tasks; 10  11 namespace AiSmoking.Core 12 {
     13     public class Smoking 14     {
     15         ///  16         /// 是否正在运行 17         ///  18         private bool running = false; 19  20         ///  21         /// 驱动 22         ///  23         private IWebDriver driver = null; 24  25  26         ///  27         /// # 无货 28         ///  29         private string no_stock = "Currently Out of Stock"; 30  31  32         ///  33         ///   # 线程等待秒数 34         ///  35         private int wait_se
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值