C# 为什么我的选择控件有时会更改selectedIndex而不会更改?
背景:我每晚运行一个进程,读取一个数据库,然后将结果写入另一个系统。目标系统除了具有UI的HTML Web服务外,没有其他接口。我几年前就建立了这个系统,它在IE9中运行时非常可靠。但是,我必须在其上运行此过程的主机已从Windows 2008 R2更改为2012 R2,IE的版本已更改为IE 11,并且大部分都可以正常工作,但在某些情况下,它无法正常工作 我使用下拉菜单选择“关闭”(值=0)或“打开”(值=1),操作一个网页,下拉菜单的名称是可变的,因为有多个相同的下拉菜单,我找到它们,然后分别设置 我已经编写了一些代码来查找选择并设置值,但在某些情况下,它像一个符咒一样工作,而在另一些情况下,它只是不设置值,即使我已经通过代码并观看了IE的页面,该页面没有设置值。代码如下:C# 为什么我的选择控件有时会更改selectedIndex而不会更改?,c#,html,C#,Html,背景:我每晚运行一个进程,读取一个数据库,然后将结果写入另一个系统。目标系统除了具有UI的HTML Web服务外,没有其他接口。我几年前就建立了这个系统,它在IE9中运行时非常可靠。但是,我必须在其上运行此过程的主机已从Windows 2008 R2更改为2012 R2,IE的版本已更改为IE 11,并且大部分都可以正常工作,但在某些情况下,它无法正常工作 我使用下拉菜单选择“关闭”(值=0)或“打开”(值=1),操作一个网页,下拉菜单的名称是可变的,因为有多个相同的下拉菜单,我找到它们,然后分
bool bDone = false;
mshtml.IHTMLElementCollection objEventCollection = (mshtml.IHTMLElementCollection)objDocument.getElementsByTagName("select");
for (int i = 0; i < objEventCollection.length; i++)
{
mshtml.IHTMLElement objElement = (mshtml.IHTMLElement)objEventCollection.item(i, 0);
if (objElement.getAttribute("name").EndsWith("NewEvent"))
{
objElement.click();
mshtml.HTMLSelectElement objEvent = (mshtml.HTMLSelectElement)objElement;
switch (sEventType)
{
case "Off":
objEvent.selectedIndex = 0; // This SOMETIMES works and SOMETIMES will error out!
bDone = true;
break;
case "On":
objEvent.selectedIndex = 1; // This SOMETIMES works and SOMETIMES will error out!
bDone = true;
break;
}
}
if (bDone)
{
break;
}
}
bOK = bDone;
boolbdone=false;
mshtml.IHTMLElementCollection objEventCollection=(mshtml.IHTMLElementCollection)objDocument.getElementsByTagName(“选择”);
for(int i=0;i
相关页面代码如下所示:
<td valign="middle" align="center"><input class="data" type="hidden" name="No1EventString" value="0"><input class="data" type="hidden" name="No1OriginalEvent" value="0"><select class="data" name="No1NewEvent">
<option value="0" selected="">Off</option>
<option value="1">On</option>
</select></td>
关
在…上
我不知道为什么有时候,NewEvent下拉列表的值在变化,但不是每次都在变化
当我在debug中运行此程序时,它运行得非常顺利,但有时会出现以下错误:
如果我无法修复,有谁知道更可靠的设置方法吗
或者,是否有解决办法,例如将焦点设置为“选择”,然后按下“向下”按钮(但我不知道如何操作)?嗯,我在午餐时学到了一些东西: 似乎IE 11有时会拒绝ihtmlement.selectedIndex=x行,但当我改为ihtmlement.value=x行时,它是可靠的
那是什么时候改变的?嗯,你的代码在哪里运行?在浏览器中?VB脚本?还有什么?代码正在Win32应用程序中运行。