搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 学生快乐编程 > 使用C#,PhantomJS和NUnit的无浏览器界面功能开发

使用C#,PhantomJS和NUnit的无浏览器界面功能开发

学生快乐编程 2018-06-30

 

无浏览器界面:听起来让人匪夷所思。因为平常大家都是用浏览器在上网,检索数据资料。但无浏览器界面自动化是创建轻量级测试的好方法,可以快速向您发送结果,而无需真正打开物理浏览器。

 

一般情况下,我们打开一个网页,但节省了渲染时间,这在某些情况下可能是有益的,例如使用爬虫从目标网站收集信息。我们希望获得采集的结果并且从命令行(或批处理文件)运行更加方便。

 

我们可以启动脚本去替我们执行采集的命令,这可以帮助大大节省我们的时间。所以这里,我为大家讲解如何在C#中实现无浏览器界面的功能开发:

 

 *请注意,为了简化执行,我使用了NUnit测试框架,这是可选的。

 *phantomjs.exe headless browser)是一个无界面的webkit浏览器。官方站点:http://phantomjs.org/

 *phantomjs.exe优点:目前很多网站都是通过异步加载网站数据,以前的方法采集网页数据得到的是js脚本和html脚本。很多数据需要js脚本再次请求。而phantomjs.exe解决了这个问题,可以自动完成异步加载数据。

 

运行时候弹出的输出窗口。


首先为大家介绍一下

 

Visual Studio中创建一个新项目,并从模板中选择

Visual C- > Windows Desktop - > Class Library

从这里安装NUnit并在项目中添加对以下DLL的引用 - C\ Program Filesx86\ NUnit.org \ framework \ 3.0.5813.39031 \ net-4.0 \ nunit.framework.dll”(此路径可能根据您的版本和安装NUnit的路径进行更改)

从这里下载Selenium Libraries,并在项目中添加对以下DLL的引用(这将在您下载selenium \ selenium-dotnet-2.48.0 \ net40的地方提供:

Selenium.WebDriverBackedSelenium.dll

ThoughtWorks.Selenium.Core.dll

WebDriver.dll

WebDriver.Support.dll

您还需要从这里获得phantomjs.exe。您需要将其添加到项目的bin \ Debug文件夹中。

为了对最终的页面截图(是的,这也可以用于无头浏览器!),您需要从可用的默认程序集中添加对System.Drawing的引用。


              软件截图参考


为了从Visual Studio GUI运行Nunit测试,您需要转到Tools-> Extensions and Updates-> Online并搜索NUnit3测试适配器。安装此扩展并重新启动Visual Studio

对于Nunit基础知识,您可以参考此链接。http://www.rhyous.com/2012/04/30/beginning-unit-testing-tutorial-in-c-with-nunit/

 

以下代码实现的功能是请求bing.com网站,发起检索,并将结果截图。


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Drawing.Imaging;

using NUnit.Framework;

using OpenQA.Selenium;

using OpenQA.Selenium.PhantomJS;

using OpenQA.Selenium.Remote;

 

 

namespace NUnitPhantom2

{

 [TestFixture]

 //创建一个可执行的程序

 public class TestClass

 {

 //实例化浏览器 PhantomJS Driver

 PhantomJSDriver phantom;

  

 [OneTimeSetUp]

 public void classSetup()

 {

 //实例化

 phantom = new PhantomJSDriver();

 //设定超时时间

 phantom.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));

 }

 

 [SetUp]

 public void Test_Setup()

 {

 

 }

 

 [Test]

  public void Test_Phantom1()

 {

 //浏览器跳转到bing.com

 phantom.Navigate().GoToUrl("https://www.bing.com");

 

 //自动写入关键词

 phantom.FindElement(By.Id("sb_form_q")).SendKeys("learn2automate");

 

 //点击检索按钮(bing.com)

 phantom.FindElement(By.Id("sb_form_go")).Click();

 

 //对渲染完成的网页进行截图

 Screenshot sh = phantom.GetScreenshot();

 sh.SaveAsFile(@"C:\Temp.jpg", ImageFormat.Png);

 }

 

 [TearDown]

 //TearDown attribute defines that the following method will run after each method runs.

 public void Test_CleanUp()

 {

 

 }

 

 [OneTimeTearDown]

 //定义了一旦类中的方法已经运行,即在运行结束时一次

 public void classTearDown()

 {

 //关闭实例,由于通过c#启动了浏览器,此处结束线程

 phantom.Quit();

 }

 }

}


我希望脚本中的评论能够让您明白代码的实现功能。 如果您有任何疑问,您可以在下面发表评论。


你绝不该错过的精彩文章:


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《使用C#,PhantomJS和NUnit的无浏览器界面功能开发》的版权归原作者「学生快乐编程」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注学生快乐编程微信公众号

学生快乐编程微信公众号:vrCoolCode

学生快乐编程

手机扫描上方二维码即可关注学生快乐编程微信公众号

学生快乐编程最新文章

精品公众号随机推荐

上一篇 >>

Netty笔记(一)