public void LinkClickByID(IE ie, string frmName, string linkId)
{
this.preOperate(ie);
Log.OutPut("点击Link,ID=" + linkId);
ie.Frame(MainFrameName).Frame(Find.ByName(frmName)).Link(Find.ById(linkId)).Click();//这行报错【COM对象与其基础RCW分开后就不能再使用】
}
下面是其中的一个方法,operate是操作界面控件的封装类,执行那些界面操作的时候,会报错,而且是会随即某个控件报错
public static void Run(IE ie)
{
iniOperate inioperate = new iniOperate(Environment.CurrentDirectory+"\\ConfigFile\\UserConfig.ini");
OperateContorl operate = new OperateContorl();
//从配置文件中读取数据
string taskName = inioperate.ReadValue("TaskCreat", "TaskName");
string taskComments = inioperate.ReadValue("TaskCreat", "TaskComments");
string pkgName = inioperate.ReadValue("TaskCreat", "PkgName");
string siteName = inioperate.ReadValue("TaskCreat", "SiteName");
//点击按钮
operate.LinkClickByID(ie, "leftFrame", "createTaskId");
//设置相关界面数据
operate.SetTextValueByID(ie, "contentFrame", "taskName", taskName);
operate.SetTextValueByID(ie, "contentFrame", "taskDesc", taskComments);
operate.SelectListByID(ie, "contentFrame", "pkgPath", pkgName);
operate.SelectListByName(ie, "contentFrame", "siteId", siteName);
//点击下一步按钮
operate.ButtonClickByName(ie, "down_btn");
}
请教各位大神有没有解决方法,万分感谢
4 个解决方案
#1
感觉是你用的com组件已经被释放,
#2
是的 但是不知道是什么原因导致了com呗释放,而且存在随机性
#3
至于何时被释放,只能看你的代码,加上调试才能清楚
#4
IE newie = IE.AttachTo<IE>(Find.ByUrl("http://10.137.206.183:18080/ideploy/main.jsp"));
public void preOperate(IE ie)
{
for (int j = 0; j < ie.Frame(MainFrameName).Elements.Count; j++)
{
//Console.Write(ie.Frame(MainFrameName).Elements[j].Id+",");
}
}
operate.SetTextValueByID(ie, "contentFrame", "taskName", taskName);
我再控件操作(按钮点击,文本输入)之前加了preOperate这个方法后出现随机性的,如果把这个方法删了,就肯定报错,这好奇怪啊
#1
感觉是你用的com组件已经被释放,
#2
是的 但是不知道是什么原因导致了com呗释放,而且存在随机性
#3
至于何时被释放,只能看你的代码,加上调试才能清楚
#4
IE newie = IE.AttachTo<IE>(Find.ByUrl("http://10.137.206.183:18080/ideploy/main.jsp"));
public void preOperate(IE ie)
{
for (int j = 0; j < ie.Frame(MainFrameName).Elements.Count; j++)
{
//Console.Write(ie.Frame(MainFrameName).Elements[j].Id+",");
}
}
operate.SetTextValueByID(ie, "contentFrame", "taskName", taskName);
我再控件操作(按钮点击,文本输入)之前加了preOperate这个方法后出现随机性的,如果把这个方法删了,就肯定报错,这好奇怪啊