【发布时间】:2014-08-12 17:36:51
【问题描述】:
我在选择元素时遇到问题,因为它会在用户从下拉列表中选择选项时动态生成。
例如,用户从下拉列表中选择“菜单集”,完成后,工具栏上会出现“新建”按钮 (ID:d_toolbar_toolbar)
这取决于选择,并且当我使用 I.E. 检查它时不会出现在 html 中。开发者工具。
我查看了网页的源代码,并找到了下面的内容,它似乎是根据选择使用 Javascript 将其动态添加到工具栏上的
<table border="0" cellspacing="2" width="100%" height="100%">
<tr>
<td height="24">
<?XML:NAMESPACE PREFIX="TBNS" /><?IMPORT NAMESPACE="TBNS" IMPLEMENTATION="/webctrl_client/1_0/toolbar.htc" />
<TBNS:Toolbar id="d_toolbar_toolbar" class="standarddarkrow" oncheckchange="javascript:toolbarButtonClicked('{0}','{1}','False',-1,13, true, 'd:toolbar:toolbar')" oncheckchange="JScript:if (event.srcNode != null) __d_toolbar_toolbar_State__.value+=((event.srcNode.getAttribute('selected')=='true')?'+':'-')+event.flatIndex+';';" onbuttonclick="JScript:if (event.srcNode != null) if ((event.srcNode.getType() != 'checkbutton') || (event.srcNode.getAttribute('_autopostback') != null)) if (getAttribute('_submitting') != 'true'){setAttribute('_submitting', 'true');try{__doPostBack('d$toolbar$toolbar',event.flatIndex);}catch(e){setAttribute('_submitting', 'false');}}" onwcready="JScript:try{__d_toolbar_toolbar_State__.value = ''}catch(e){}" defaultstyle="color:black;border:solid 1px #E0E3EA;background:#E0E3EA;padding:0px;" hoverstyle="border:solid 1px #416791;background:#E0E3EA;margin:0px;padding:0px;" selectedstyle="color:black;border:solid 1px #E0E3EA;background:#E0E3EA;padding:0px;" style="border-width:0px;font-family:Tahoma;font-size:8pt;">
<TBNS:ToolbarButton ID="New" imageUrl="http://www.starchef.net/skins/default/new.gif" onkeydown="if (event.keyCode==13){event.returnValue=false}">New</TBNS:ToolbarButton>
我尝试通过 ID 进行选择 New,但这没有奏效,我想我需要选择 d_toolbar_toolbar 元素,然后做进一步的事情来选择 New,但我不知道如何。
【问题讨论】:
-
尝试在 Goole Chrome 和 jQuery 上调试它。
-
有什么网址可以查吗?
-
如你所说,元素是动态创建的,尝试从它的静态父元素遍历到它并检查。
-
本站只兼容IE。而且我无法发布完整的网址,因为它需要登录凭据。有没有办法可以使用 xpath 或 css 选择
? -
//TBNS,看看你能不能找到它们。 2)如果是这样,那么尝试 //TBNS[@ID="New"]...如果不是,那么我会尝试找到它所在的特定单元格,然后执行/TBNS[2]。 3)如果这仍然不起作用,那么我建议使用/following-sibling::TBNS方法。如果可以进一步帮助您,访问这一页会很棒,但我知道这里存在专有内容限制。请回复您的结果。