Commit 21317895 by mahaisong

fix: 测试Selenium、 各种测试动作+ 并行限制验证动作

parent 3a1921e0
请使用VS2017打开:
请使用VS2017打开:
smallproject\12.ES支持2-6多版本\TestUnit\TestUnit\TestUnit.sln
主要使用的测试类:
UnitTestProject\TestES\TestES2\ESAccess.cs
里面的 Index 方法(增加):
和SearchDetail 方法(为了调试方便,此函数内调试实现了基本上所有方法。)
其他都是空函数。
\ No newline at end of file


Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUnit.Tests1", "NUnit.Tests1\NUnit.Tests1.csproj", "{8EDF4429-251A-416D-BB68-93F227191BCF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{8EDF4429-251A-416D-BB68-93F227191BCF}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NUnit.Tests1</RootNamespace>
<AssemblyName>NUnit.Tests1</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="nunit.framework, Version=3.6.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.6.1\lib\net45\nunit.framework.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="WebDriver, Version=3.11.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Selenium.WebDriver.3.11.2\lib\net45\WebDriver.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Selenium\SeleniumDriverInfo.cs" />
<Compile Include="Selenium\SeleniumManager.cs" />
<Compile Include="Selenium\SeleniumPool.cs" />
<Compile Include="TestCaseClass2.cs" />
<Compile Include="TestClass.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<ItemGroup>
<Content Include="Selenium\说明.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Selenium.Chrome.WebDriver.2.36\build\Selenium.Chrome.WebDriver.targets" Condition="Exists('..\packages\Selenium.Chrome.WebDriver.2.36\build\Selenium.Chrome.WebDriver.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Selenium.Chrome.WebDriver.2.36\build\Selenium.Chrome.WebDriver.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Selenium.Chrome.WebDriver.2.36\build\Selenium.Chrome.WebDriver.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
</Project>
\ No newline at end of file
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("NUnit.Tests1")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("nunit.tests")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
using OpenQA.Selenium;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SocketCrawlerServer
{
/// <summary>
/// Selenium 浏览器实例
/// </summary>
public class SeleniumDriverInfo : IDisposable
{
/// <summary>
/// Hash ID
/// </summary>
public string hashId { set; get; }
/// <summary>
/// 实际的浏览器实例
/// </summary>
public RemoteWebDriver client { set; get; }
/// <summary>
/// 超时时间
/// </summary>
public DateTime delayTime { set; get; }
/// <summary>
/// 最后激活时间
/// </summary>
public DateTime lastActiveTime { set; get; }
/// <summary>
/// 销毁
/// </summary>
public void Dispose()
{
client.Close();
client.Dispose();
}
}
}
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace SocketCrawlerServer
{
/// <summary>
/// 浏览器管理
/// </summary>
public class SeleniumManager
{
/// <summary>
/// 通过 PhantomJS 获取网站源码
/// </summary>
/// <param name="url"></param>
/// <param name="responseUrl"></param>
/// <param name="Status"></param>
/// <returns></returns>
public static string GetHttpContent(string url, out string responseUrl, out string Status)
{
string httpContent = null;
SeleniumDriverInfo seleniumDriverInfo = null;
string hashId = "";
try
{
seleniumDriverInfo = SeleniumPool.Instance.BorrowInstance();
hashId = seleniumDriverInfo.hashId;
// open a new tab and set the context
((ChromeDriver)seleniumDriverInfo.client).ExecuteScript("window.open('_blank', 'worktab');");
seleniumDriverInfo.client.SwitchTo().Window("worktab");
seleniumDriverInfo.client.Navigate().GoToUrl(url);
//Thread.Sleep(3000); //执行成功后仍然等待3S,用于接收后加载数据
responseUrl = seleniumDriverInfo.client.Url;
Status = "";
httpContent = seleniumDriverInfo.client.PageSource;
}
catch (Exception ex)
{
responseUrl = url;
Status = "";
}
finally
{
if (seleniumDriverInfo != null)
SeleniumPool.Instance.ReturnInstance(seleniumDriverInfo, hashId);
}
return httpContent;
}
}
}
注意:当机器上的chrome浏览器出现了报错,或无响应,要注意chromedriver的版本是否对应
注意:当机器上的chrome浏览器出现了报错,或无响应,要注意chromedriver的版本是否对应
Selenium的nuget中Selenium.Chrome.WebDriver与chrome的对应关系表:
chromedriver版本 支持的Chrome版本
v2.36 v64-66
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using NUnit.Framework;
using System.Threading;
using OpenQA.Selenium.Remote;
using SocketCrawlerServer;
namespace NUnit.Tests1
{
public class TestCaseClass2
{
[Test]
public void TestMethod2()
{
Parallel.For(0, 1000, x =>
{
string httpContent = null;
SeleniumDriverInfo seleniumDriverInfo = null;
string hashId = "";
try
{
seleniumDriverInfo = SeleniumPool.Instance.BorrowInstance();
hashId = seleniumDriverInfo.hashId;
// open a new tab and set the context
((ChromeDriver)seleniumDriverInfo.client).ExecuteScript("window.open('_blank', 'worktab');");
seleniumDriverInfo.client.SwitchTo().Window("worktab");
seleniumDriverInfo.client.Navigate().GoToUrl("http://www.cnblogs.com/NorthAlan");
//Thread.Sleep(3000); //执行成功后仍然等待3S,用于接收后加载数据
httpContent = seleniumDriverInfo.client.PageSource;
}
catch (Exception ex)
{
}
finally
{
if (seleniumDriverInfo != null)
SeleniumPool.Instance.ReturnInstance(seleniumDriverInfo, hashId);
}
});
}
[Test]
public void TestMethod()
{
// System.Environment.SetEnvironmentVariable("webdriver.chrome.driver", "C:\\Users\\admin\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe");
var options = new ChromeOptions();
options.AddArgument("--window-position=-32000,-32000");//显示位置不在可见范围内、任务栏有、进程中有、点开看不见。
options.AddArgument("headless");//无窗体显示,上面可以不做了。 任务栏没有、进程中有。
options.AddUserProfilePreference("profile.default_content_setting_values.images", 2);//没有图片
options.AddUserProfilePreference("profile.default_content_settings.popups", 0);//没弹出窗口
ChromeDriverService pds = ChromeDriverService.CreateDefaultService();
pds.HideCommandPromptWindow = true;//隐藏命令提示框
//ChromeDriver driver = new ChromeDriver(pds, options);
RemoteWebDriver driver = new ChromeDriver(pds, options);
string CurrentWindowHandle = driver.CurrentWindowHandle;// D7
int count = driver.WindowHandles.Count;//1
driver.ExecuteScript("window.open('_blank', 'worktab');");//调试时有时候开了好几个window
Thread.Sleep(3000);
count = driver.WindowHandles.Count;//2(D7,C8)
driver.SwitchTo().Window("worktab");//切换选中的tab窗口
CurrentWindowHandle = driver.CurrentWindowHandle;//C8
Thread.Sleep(3000);
driver.Navigate().GoToUrl("http://www.cnblogs.com/NorthAlan");//当前选中的窗口C8
Thread.Sleep(3000); //执行成功后仍然等待3S,用于接收后加载数据
string sb = driver.PageSource;
//实验关闭
driver.SwitchTo().Window(driver.WindowHandles[1]).Close();//关闭窗口1
Thread.Sleep(3000);
driver.SwitchTo().Window(driver.WindowHandles[0]);//未关闭窗口0,也未关闭chrome进程。
Thread.Sleep(3000);
driver.Dispose();
}
}
}
using NUnit.Framework;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Interactions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace NUnit.Tests1
{
[TestFixture]
public class TestClass
{
[Test]
public void TestMethod()
{
// System.Environment.SetEnvironmentVariable("webdriver.chrome.driver", "C:\\Users\\admin\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe");
IWebDriver driver = new ChromeDriver();
driver.Url = "http://www.cnblogs.com/NorthAlan";
var lnkAutomation = driver.FindElement(By.XPath("//*[@id='sidebar_toptags']/div/ul/li[1]/a[text()='自动化测试']"));
lnkAutomation.Click();
}
[Test]
public void TestMethod1()
{
/// <summary>
/// demo1 : 获取元素
/// </summary>
Console.WriteLine("Step 01 : 启动浏览器并打开博客园首页。");
IWebDriver driver = new ChromeDriver();
driver.Url = "http://www.cnblogs.com";
driver.Manage().Window.Maximize();
Console.WriteLine("Step 02 : 获取并输出部分页面信息。");
Console.WriteLine(string.Format("Current window handle: {0}", driver.CurrentWindowHandle));
Console.WriteLine(string.Format("Window handle count: {0}", driver.WindowHandles.Count));
Console.WriteLine(string.Format("Current window title: {0}", driver.Title));
Console.WriteLine("Step 03 : 验证博客园站点的 Title 是否正确。");
// Assert.Equals("博客园 - 开发者的网上家园", driver.Title);
Console.WriteLine("Step 04 : 关闭当前页面。");
driver.Close();
}
[Test]
public void TestMethod2()
{
IWebDriver driver = new ChromeDriver();
driver.Url = "http://www.cnblogs.com";
Console.WriteLine("Step 02 : 寻找需要检查的页面元素。");
var divMain = driver.FindElement(By.Id("main"));
var lnkHome = driver.FindElement(By.XPath("//ul[@class='post_nav_block']/li[2]/a"));
var lnkNews = driver.FindElement(By.XPath("//ul[@class='post_nav_block']/li[4]/a"));
lnkNews.Click();
Thread.Sleep(3000);
Console.WriteLine("Step 03 : 检查导航条文字信息。");
Console.WriteLine("Step 04 : 关闭浏览器。");
driver.Close();
}
[Test]
public void TestMethod3()
{
Console.WriteLine("Step 00 : 准备测试数据。");
var testDatas = new List<string>() { "首页", "精华", "候选", "新闻" }; //准备测试数据
Console.WriteLine("Step 01 : 启动浏览器并打开博客园首页。");
IWebDriver driver = new ChromeDriver();
driver.Url = "http://www.cnblogs.com";
Console.WriteLine("Step 02 : 寻找需要检查的页面元素。");
var divMain = driver.FindElement(By.Id("main"));
var lnkNavList = driver.FindElements(By.XPath(".//ul[@class='post_nav_block']/li/a"));
Console.WriteLine("Step 03 : 检查导航条文字信息。");
for (var i = 0; i < lnkNavList.Count; i++)
{
string test = lnkNavList[i].Text;
}
Console.WriteLine("Step 04 : 关闭浏览器。");
driver.Close();
}
[Test]
public void TestMethod4()
{
Console.WriteLine("Step 00 : 准备测试数据。");
var testDatas = new List<string>() { "首页", "精华", "候选", "新闻" }; //准备测试数据
Console.WriteLine("Step 01 : 启动浏览器并打开博客园首页。");
IWebDriver driver = new ChromeDriver();
driver.Url = "http://www.cnblogs.com";
Console.WriteLine("Step 02 : 寻找需要检查的页面元素。");
var divMain = driver.FindElement(By.Id("main"));
var lnkNavList = driver.FindElements(By.XPath(".//ul[@class='post_nav_block']/li/a"));
Console.WriteLine("Step 03 : 检查导航条文字信息。");
for (var i = 0; i < lnkNavList.Count; i++)
{
string test = lnkNavList[i].Text;
var value = lnkNavList[i].GetAttribute("class");
var value1 = lnkNavList[i].GetCssValue("font-family");
var value2 = lnkNavList[i].GetCssValue("color");
}
Console.WriteLine("Step 04 : 关闭浏览器。");
driver.Close();
}
[Test]
public void TestMethod5()
{
Console.WriteLine("Step 01 : 启动浏览器并打开博客园首页。");
IWebDriver driver = new ChromeDriver();
driver.Url = "http://www.cnblogs.com";
Console.WriteLine("Step 02 : 寻找需要操作的页面元素。");
var txtSearch = driver.FindElement(By.Id("zzk_q"));
var btnSearch = driver.FindElement(By.XPath(".//input[@type='button' and @value='找找看']"));
Console.WriteLine("Step 03 : 输入查询文本");
txtSearch.SendKeys("John Ma编程");
Console.WriteLine("Step 04 : 点击查询");
btnSearch.Click();
System.Threading.Thread.Sleep(5000);
Console.WriteLine("Step 05 : 关闭浏览器。");
driver.Close();
}
/// <summary>
/// 不能用
/// </summary>
[Test]
public void TestMethod6()
{
Console.WriteLine("Step 01 : 启动浏览器并打开博客园首页。");
IWebDriver driver = new ChromeDriver();
driver.Url = "http://www.cnblogs.com";
//Step 02 : 寻找需要操作的表格单元格。
var tableCol = driver.FindElement(By.XPath("//table[@id='tblTest']/tbody/tr/td[1]"));
var action = new Actions(driver);
action.KeyDown(Keys.Control);
action.Click(tableCol);
action.Build();
action.Perform();
}
[Test]
public void TestMethod7()
{
Console.WriteLine("Step 01 : 启动浏览器并打开博客园首页。");
IWebDriver driver = new ChromeDriver();
driver.Url = "http://www.cnblogs.com";
Console.WriteLine("Step 02 : 寻找需要操作的页面元素。");
var divText = driver.FindElement(By.Id("site_nav_top"));
var point = divText.Location;
var width = int.Parse(divText.GetCssValue("width").Replace("px", string.Empty));
Console.WriteLine("Step 03 : 选中文本信息。");
var action = new Actions(driver);
action
.MoveByOffset(point.X, point.Y) //移动鼠标到文本开头
.ClickAndHold() //按下鼠标
.MoveByOffset(point.X + width, point.Y) //移动鼠标到文本结束
.Release() //释放鼠标
.Build()
.Perform();
System.Threading.Thread.Sleep(5000);
Console.WriteLine("Step 04 : 关闭浏览器。");
}
[Test]
public void TestMethod8()
{
Console.WriteLine("Step 01 : 启动浏览器并打开博客园首页。");
IWebDriver driver = new ChromeDriver();
driver.Url = "http://www.cnblogs.com";
Console.WriteLine("Step 02 : 寻找需要操作的页面元素。");
var txtSearch = driver.FindElement(By.Id("zzk_q"));
var btnSearch = driver.FindElement(By.XPath(".//input[@type='button' and @value='找找看']"));
Console.WriteLine("Step 03 : 输入查询文本");
txtSearch.SendKeys("John Ma编程");
Console.WriteLine("Step 04 : 点击查询");
btnSearch.Click();
System.Threading.Thread.Sleep(5000);
Console.WriteLine("Step 04 : 截屏");
var takesScreenshot = (ITakesScreenshot)driver;
var screenshot = takesScreenshot.GetScreenshot();
screenshot.SaveAsFile("D:\\screenshot.png", ScreenshotImageFormat.Png);
Console.WriteLine("Step 05 : 关闭浏览器。");
driver.Close();
}
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
C:\Users\admin\documents\visual studio 2015\Projects\NUnit.Tests1\NUnit.Tests1\bin\Debug\NUnit.Tests1.dll
C:\Users\admin\documents\visual studio 2015\Projects\NUnit.Tests1\NUnit.Tests1\bin\Debug\NUnit.Tests1.dll
C:\Users\admin\documents\visual studio 2015\Projects\NUnit.Tests1\NUnit.Tests1\bin\Debug\NUnit.Tests1.pdb
C:\Users\admin\documents\visual studio 2015\Projects\NUnit.Tests1\NUnit.Tests1\bin\Debug\nunit.framework.dll
C:\Users\admin\documents\visual studio 2015\Projects\NUnit.Tests1\NUnit.Tests1\bin\Debug\WebDriver.dll
C:\Users\admin\documents\visual studio 2015\Projects\NUnit.Tests1\NUnit.Tests1\bin\Debug\nunit.framework.xml
C:\Users\admin\documents\visual studio 2015\Projects\NUnit.Tests1\NUnit.Tests1\bin\Debug\WebDriver.xml
C:\Users\admin\documents\visual studio 2015\Projects\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.csprojResolveAssemblyReference.cache
C:\Users\admin\documents\visual studio 2015\Projects\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.dll
C:\Users\admin\documents\visual studio 2015\Projects\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.pdb
D:\工具\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\NUnit.Tests1.dll
D:\工具\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\NUnit.Tests1.pdb
D:\工具\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\nunit.framework.dll
D:\工具\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\WebDriver.dll
D:\工具\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\nunit.framework.xml
D:\工具\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\WebDriver.xml
D:\工具\Selenium\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.csprojResolveAssemblyReference.cache
D:\工具\Selenium\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.dll
D:\工具\Selenium\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.pdb
D:\BaiduYunDownload\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\NUnit.Tests1.dll
D:\BaiduYunDownload\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\NUnit.Tests1.pdb
D:\BaiduYunDownload\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\nunit.framework.dll
D:\BaiduYunDownload\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\WebDriver.dll
D:\BaiduYunDownload\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\nunit.framework.xml
D:\BaiduYunDownload\Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\WebDriver.xml
D:\BaiduYunDownload\Selenium\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.dll
D:\BaiduYunDownload\Selenium\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.pdb
D:\smallproject\3.测试Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\NUnit.Tests1.dll
D:\smallproject\3.测试Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\NUnit.Tests1.pdb
D:\smallproject\3.测试Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\nunit.framework.dll
D:\smallproject\3.测试Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\WebDriver.dll
D:\smallproject\3.测试Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\nunit.framework.xml
D:\smallproject\3.测试Selenium\NUnit.Tests1\NUnit.Tests1\bin\Debug\WebDriver.xml
D:\smallproject\3.测试Selenium\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.csprojResolveAssemblyReference.cache
D:\smallproject\3.测试Selenium\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.dll
D:\smallproject\3.测试Selenium\NUnit.Tests1\NUnit.Tests1\obj\Debug\NUnit.Tests1.pdb
++ "b/3.\346\265\213\350\257\225Selenium/NUnit.Tests1/NUnit.Tests1/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs"
++ "b/3.\346\265\213\350\257\225Selenium/NUnit.Tests1/NUnit.Tests1/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs"
++ "b/3.\346\265\213\350\257\225Selenium/NUnit.Tests1/NUnit.Tests1/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs"
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NUnit" version="3.6.1" targetFramework="net45" />
<package id="Selenium.Chrome.WebDriver" version="2.36" targetFramework="net45" />
<package id="Selenium.WebDriver" version="3.11.2" targetFramework="net45" />
</packages>
\ No newline at end of file
Copyright (c) 2017 Charlie Poole
Copyright (c) 2017 Charlie Poole
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
NUnit 3.0 is based on earlier versions of NUnit, with Portions
NUnit 3.0 is based on earlier versions of NUnit, with Portions
Copyright (c) 2002-2014 Charlie Poole or
Copyright (c) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or
Copyright (c) 2000-2002 Philip A. Craig
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CopyChromeDriverToBin" BeforeTargets="AfterBuild">
<PropertyGroup>
<ChromeDriverSrcPath>$(MSBuildThisFileDirectory)..\driver\chromedriver.exe</ChromeDriverSrcPath>
<ChromeDriverTargetPath Condition=" '$(ChromeDriverTargetPath)' == '' ">$(TargetDir)</ChromeDriverTargetPath>
</PropertyGroup>
<Copy SourceFiles="$(ChromeDriverSrcPath)" DestinationFiles="$(ChromeDriverTargetPath)chromedriver.exe" SkipUnchangedFiles="true"></Copy>
</Target>
</Project>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment