博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
控制台应用项目中使用WatinWeb测试工具遇到的问题
阅读量:6041 次
发布时间:2019-06-20

本文共 2294 字,大约阅读时间需要 7 分钟。

使用环境: vs2010, 项目类型: Console Application 引用程序集:Watin.Core

 

测试代码:

 

 1         //[STAThread]
 2         
static 
void Main(
string[] args)
 3         {
 4             
//
实例化IE类,可以把实例化的ie看成是页面,以后的操作基本都是它打交道
 5 
 6             IE ie = 
new IE(
"
http://www.baidu.com/
");
 7 
 8             
//
找到搜索输入框,并输入“Watin”
 9 
10             ie.TextField(Find.ById(
"
kw
")).TypeText(
"
Watin
");
11 
12             
//
找到搜索按钮并点击
13 
14             ie.Button(Find.ById(
"
su
")).Click();
15         }

遇到问题:

编译代码不通过,错误提示:

 

Warning    
1    The referenced assembly 
"
WatiN.Core
" could not be resolved because it has a dependency on 
"
System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
" which 
is not 
in the currently targeted framework 
"
.NETFramework,Version=v4.0,Profile=Client
". Please remove references to assemblies not 
in the targeted framework or consider retargeting your project.    ConsoleAppWatin

 

解决:

上面提示大概意思是:Watin.Core有个依赖不在当前的NetFramework中,经检查发现项目中使用的 Target framework 版本为:.NET Framework 4 Clinet Profile,改为 NET Framework 即可通过编译正常使用.

这里顺便说说 .NET Framework 4.0 和.NET Framework 4.0 Client Profile 区别:Net Framework 4.0毫无疑问就像是.Net Framework 2.0一样是.Net Framework 的 4.0版本;而.Net Framework 4.0 Client Profile是.Net Framework 3.5 sp1的子集,是.Net Framework 4.0 简化版,是面向客户端应用程序的(估计这也是为什么不能够使用IIS7 API的原因)。

 

启动项目,报出异常:

 

Unhandled Exception: System.Threading.ThreadStateException: The CurrentThread ne
eds to have it
'
s ApartmentState set to ApartmentState.STA to be able to automate
 Internet Explorer.
   at WatiN.Core.IE.CheckThreadApartmentStateIsSTA()
   at WatiN.Core.IE.CreateNewIEAndGoToUri(Uri uri, IDialogHandler logonDialogHan
dler, Boolean createInNewProcess)
   at WatiN.Core.IE..ctor(String url)
   at ConsoleAppWatin.Program.Main(String[] args) 
in D:\vs2010\ConsoleAppWatin\C
onsoleAppWatin\Program.cs:line 
15 //IE ie = new IE("http://www.baidu.com/"); 15行的代码

 

 

 解决办法:

在 Main方法上加属性:[STAThread]

[STAThread]是Single  Thread  Apartment单线程套间的意思,是一种线程模型,用在程序的入口方法上

(在C#和VB.NET里是Main()方法),来指定当前线程的ApartmentState 是STA。用在其他方法上不产生影响。
在aspx页面上可以使用AspCompat = "true" 来达到同样的效果。这个属性只在 Com Interop 有用,
如果全部是  managed  code  则无用。简单的说法:[STAThread]指示应用程序的默认线程模型是单线程单元 (STA)。
启动线程模型可设置为单线程单元或多线程单元。如果未对其进行设置,则该线程不被初始化。也就是说如果你用的.NET Framework,
并且没有使用COM Interop,一般不需要这个Attribute。其它的还有MTA(多线程套间)、Free Thread(自由线程)。
单线程套间,简单来说所有对于单线程套间中对象的访问都是通过消息来传递的,所以同一时间只有一个线程能够访问单线程套间中的对象。

 

 

 

 

转载于:https://www.cnblogs.com/xiaoqiangR/archive/2012/08/02/2620475.html

你可能感兴趣的文章
linux用户系统的详细说明
查看>>
mysql-mmm 安装配置过程(两主一备份情况
查看>>
软件版本代号
查看>>
linux查看内核版本、系统版本、系统位数(32or64)
查看>>
无线路由器基础
查看>>
如何搭建一个网站
查看>>
关于IP地址
查看>>
OGEngine开源引擎环境搭建
查看>>
IDS 开源
查看>>
每天laravel-20160629|RedisTaggedCache
查看>>
Java关键字final、static使用总结
查看>>
Ubuntu 安装 MYSQL
查看>>
理解Dijkstra算法
查看>>
社会工程学+Web hacked***某游戏公司
查看>>
分布式存储预览
查看>>
WebLogic11g-常用运维操作
查看>>
关于flex的三属性2--flex-basis
查看>>
江南Style是怎么把youtobe的计数器弄坏的
查看>>
如何用C#开发的计算器小软件
查看>>
[unity3d]汽车的开关门动画播放
查看>>