2013-08-23 55 views
0
<DIV class="uiMenu uiSelectorMenu" role=menu> 
<UL class=uiMenuInner bindPoint="menu"> 
<LI class="uiMenuItem uiMenuItemRadio uiSelectorOption checked" data-label="Paused"><A aria-checked=true class=itemAnchor role=menuitemradio tabIndex=0 href="#" rel=ignore><SPAN class="itemLabel fsm"><SPAN class=icon_wrap><IMG class="selector icon" src="/images/adz/ad_states/paused.gif"></SPAN>Paused</SPAN></A></LI> 
<LI class="uiMenuItem uiMenuItemRadio uiSelectorOption " data-label="Active"><A aria-checked=true class=itemAnchor role=menuitemradio tabIndex=1 href="#" rel=ignore><SPAN class="itemLabel fsm"><SPAN class=icon_wrap><IMG class="selector icon" src="/images/adz/ad_states/running.gif"></SPAN>Active</SPAN></A></LI> 
<LI class="uiMenuItem uiMenuItemRadio uiSelectorOption " data-label="Deleted"><A aria-checked=true class=itemAnchor role=menuitemradio tabIndex=2 href="#" rel=ignore><SPAN class="itemLabel fsm"><SPAN class=icon_wrap><IMG class="selector icon" src="/images/adz/ad_states/deleted.gif"></SPAN>Deleted</SPAN></A></LI></UL></DIV></DIV><SPAN bindPoint="copy_link_wrapper"><A class=copy_link href="#"></A></SPAN></DIV><SELECT bindPoint="select"><OPTION value=""></OPTION><OPTION selected value=2>Paused</OPTION><OPTION value=1>Active</OPTION><OPTION value=99>Deleted</OPTION></SELECT> </DIV></TD> 
<TD id=td_time_start_html_last_row class=td_time_start_html ?> 

以上是我想更改的下拉菜单的HTML代码。如何以编程方式更改此下拉菜单中的选定项目?

在代码的末尾有SELECT,OPTION等..我通常可以改变它,但是当我更改selectedIndex时,它不会在网站上做任何事情,我假定它的开始部分是代码与此有关。

这里是我的VB6的代码(注意,您能告诉我在任何语言)

For i = 0 To Form1.WebBrowser1.Document.All.length - 1 ' 
    If Form1.WebBrowser1.Document.All.Item(i).nodeName = "SELECT" Then 
     For x = 0 To Form1.WebBrowser1.Document.All.Item(i).Options.length - 1 
      If InStr(Form1.WebBrowser1.Document.All.Item(i).Options(x).Text, "Active") > 0 Then 
       Form1.WebBrowser1.Document.All.Item(i).selectedIndex = x 
      End If 
     Next x 
    End If 
Next i 

当我运行代码,我检查与 Debug.Print Form1.WebBrowser1.Document.All的项目值.Item(i).Options(x).Selected 它确实返回true,并且上一次选择确实表示为false,但在网站上该项目不会更改/更新。

任何帮助,非常感谢。

+1

你有没有可能将浏览器嵌入到VB6 WinForms应用程序中?没有什么是清楚的代码:) –

+0

因为你似乎在做外部网站的浏览器自动化,我可能会建议你使用像WatiN或Selenium这样的库吗?在非结构化代码中进行如此低级别的处理是长时间工作和糟糕结果的秘诀。如果您可以在大多数自动化库中对单行执行相同的操作,那么您正在为整个DOM搜索一个“SELECT”。 –

+0

高科技,是啊我使用VB6中的WebBrowser,我相信它是一个IE插件(不确定寿)。关于你的建议,我必须做循环的原因是因为选择没有ID ..但只有2个选择在页面上,所以它没有什么大不了的...也是这个下拉菜单更改是唯一的我必须做的事情:) 编辑:啊我刚刚意识到你的意思..雅是它相当低效我猜,但就像我说我只需要做这1件事,所以我不介意 – user1088794

回答

1

使用该选项的.selected属性;这将自动更新select的.selectedIndex。 POC .HTA:

<html> 
<head> 
    <Title>select</Title> 
    <hta:application id="select" scroll = "no"> 
    <script type="text/vbscript"> 
    Function doIt() 
    ' select Item2 
    With document.getElementById("lbDemo") 
     MsgBox "Before: " & .selectedIndex 
     .options(1).selected = True 
     MsgBox "After: " & .selectedIndex 
    End With 
    End Function 
    </script> 
</head> 
<body> 
    <select id="lbDemo" size="4"> 
    <option value=Item1>Item1</option> 
    <option value=Item2>Item2</option> 
    <option value=Item3>Item3</option> 
    </select> 
    <hr /> 
    <input type="button" value="select 2" onclick="doIt" /> 
</body> 
</html> 
+0

嗨,我以前试过Form1.WebBrowser1.Document.All.Item(i).Options(x).Selected = true 它有相同的结果 我在想,SELECT代码是假的/隐藏的,并且该网站正在使用该代码之前\t“uiMenu uiSelectorMenu”等 – user1088794

1

不知道有多少,这将帮助,因为我跑了一个2012 VisualBasic中赢窗体应用程序样本,

Dim selectList = WebBrowser1.Document.GetElementsByTagName("select").Item(0) 
selectList.SetAttribute("selectedIndex", 2) 

但使用HTML片段作为页面内容的网页浏览器控件,上面的代码在下拉列表"Active"中仅使用HTMLElement类正确选择了第二项。下面的屏幕截图:

enter image description here

如果你能发布完整的源代码的某个地方可能更容易找出你的具体问题。

+0

不幸运:(就像我对一个不同的海报说的,我非常确定HTML中的SELECT下拉菜单只是假的,它在t之前使用了这些东西帽子。我可以发布整个HTML ..它相当大的寿(无论如何附加一个文件?).. fyi它从他们的广告的Facebook页面。我正在制作一个暂停广告系列的小应用程序。 – user1088794

+1

@ user1088794:它很可能使用JQuery以编程方式更新选项。没有简单的方法发布文件。最好找到一个网站发布项目。您可以随时通过我的网站链接与我联系。干杯。 –

+0

感谢HiTech,我感谢您的帮助。我会尽快与你联系:) – user1088794

相关问题