Selenium Webdriver不根据文本,xpath或ID单击menuitem

时间:2014-05-06 14:10:20

标签: javascript selenium xpath

我在sharepoint的页面中有一些html看起来像......

<span style="display:none">

<menu type='ServerMenu' id="zz28_RptControls" largeIconMode="true">

<ie:menuitem id="zz29_AddColumn" type="option" iconSrc="/_layouts/images/MenuAddColumn.gif" onMenuClick="window.location = '/SiteDirectory/investment/AE/5539/_layouts/fldNew.aspx?List=%7B49B0DF27%2D5F75%2D4721%2DA81C%2DF8FA9F5CB9DF%7D&amp;Source=http%3A%2F%2Fdv%2Dsharepoint%2Ecollercapital%2Ecom%2FSiteDirectory%2Finvestment%2FAE%2F5539%2FEmails%2FForms%2FAllItems%2Easpx';" text="Create Column" description="Add a column to store additional information about each item." menuGroupId="100"></ie:menuitem>

<ie:menuitem id="zz30_AddView" type="option" iconSrc="/_layouts/images/MenuAddView.gif" onMenuClick="window.location = '/SiteDirectory/investment/AE/5539/_layouts/ViewType.aspx?List=%7B49B0DF27%2D5F75%2D4721%2DA81C%2DF8FA9F5CB9DF%7D&amp;Source=http%3A%2F%2Fdv%2Dsharepoint%2Ecollercapital%2Ecom%2FSiteDirectory%2Finvestment%2FAE%2F5539%2FEmails%2FForms%2FAllItems%2Easpx';" text="Create View" description="Create a view to select columns, filters, and other display settings." menuGroupId="100"></ie:menuitem>

<ie:menuitem id="zz31_ListSettings" type="option" iconSrc="/_layouts/images/MenuListSettings.gif" onMenuClick="window.location = '/SiteDirectory/investment/AE/5539/_layouts/listedit.aspx?List=%7B49B0DF27%2D5F75%2D4721%2DA81C%2DF8FA9F5CB9DF%7D';" text="Document Library Settings" description="Manage settings such as permissions, columns, views, and policy." menuGroupId="200">

</ie:menuitem></menu></span><span title="Open Menu">

<div id="zz32_ListSettingsMenu_t" class="ms-menubuttoninactivehover" onmouseover="MMU_PopMenuIfShowing(this);MMU_EcbTableMouseOverOut(this, true)" hoverActive="ms-menubuttonactivehover" hoverInactive="ms-menubuttoninactivehover" onclick=" MMU_Open(byid('zz28_RptControls'), MMU_GetMenuFromClientId('zz32_ListSettingsMenu'),event,false, null, 0);" foa="MMU_GetMenuFromClientId('zz32_ListSettingsMenu')" oncontextmenu="this.click(); return false;" nowrap="nowrap"><a id="zz32_ListSettingsMenu" accesskey="I" href="#" onclick="javascript:return false;" style="cursor:hand;white-space:nowrap;" onfocus="MMU_EcbLinkOnFocusBlur(byid('zz28_RptControls'), this, true);" onkeydown="MMU_EcbLinkOnKeyDown(byid('zz28_RptControls'), MMU_GetMenuFromClientId('zz32_ListSettingsMenu'), event);" onclick=" MMU_Open(byid('zz28_RptControls'), MMU_GetMenuFromClientId('zz32_ListSettingsMenu'),event,false, null, 0);" oncontextmenu="this.click(); return false;" menuTokenValues="MENUCLIENTID=zz32_ListSettingsMenu,TEMPLATECLIENTID=zz28_RptControls" serverclientid="zz32_ListSettingsMenu">Settings<img src="/_layouts/images/blank.gif" border="0" alt="Use SHIFT+ENTER to open the menu (new window)."/></a><img align="absbottom" src="/_layouts/images/menudark.gif" alt="" />

</div></span>
        </td>

有一个“设置”按钮(ID为zz32_ListSettingsMenu_t),点击后会打开一个带有几个menuitem对象的小下拉框。

我可以单击“设置”对象在Selenium中打开下拉列表但没有问题,但是当我尝试单击menuitem时显示没有任何反应。我已经等待了我已经尝试了//menuitem[contains(text(),'Document Library Settings']的xpath或zz31_ListSettings的ID值,甚至是LINKTEXT的{​​{1}},但似乎没有任何效果,Selenium只是没有找到它点击它。

任何人都有任何想法我正在画空白......

1 个答案:

答案 0 :(得分:0)

显然,通常的方式是首选,但如果你遇到困难,你有时可以通过手动发送的击键来解决它。我经常做一个sendKeys,就像这样:

element.click(); //click on menu to expand it
element.sendKeys( Keys.DOWN ); // key donw once
element.sendKeys( Keys.ENTER); //to select the item