如何选择显示下拉列表的xpath

时间:2016-09-13 11:21:46

标签: xpath selenium-webdriver

我在网格中有很多行,下面只列出了两行。当我选择一行并单击下拉菜单时,只显示下拉菜单。我只想在显示它的位置选择帐户开启下拉项。我可以使用什么 Xpath 来实现这一目标?我注意到它显示的地方,样式说

style="top: 446px; display: block; left: 76px; right: auto;">; 

其他人说显示:无

我想出了下面的内容,但想要只有一个Xpath。

driver.find_element_by_xpath("//div[not(contains(@style,'display:none'))]//name['colActionDropdownMenu']")
driver.find_elements_by_xpath('//*[contains(@id, 'AccountOpen')]')

HTML:

<ul name="colActionDropdownMenu" class="dropdown-menu action-dropdown-menu noselect" dropdown-menu="" role="menu" style="top: 446px; display: none; left: 76px; right: auto;">
         <li role="menuitem" ng-repeat="action in grid.appScope.validActions">
                <a href="" id="AccountOpen" ng-click="grid.appScope.doAction(action)">Account Open</a>
            </li><li role="menuitem" ng-repeat="action in grid.appScope.validActions">
        </ul>
<ul name="colActionDropdownMenu" class="dropdown-menu action-dropdown-menu noselect" dropdown-menu="" role="menu" style="top: 269px; display: block; left: 76px; right: auto;">
<li role="menuitem" ng-repeat="action in grid.appScope.validActions">
                <a href="" id="AccountOpen" ng-click="grid.appScope.doAction(action)">Account Open</a>
            </li><li role="menuitem" ng-repeat="action in grid.appScope.validActions">
        </ul>

1 个答案:

答案 0 :(得分:1)

使用以下xpath

"//ul[@name='colActionDropdownMenu'][contains(@style,'display: block')]//a[@id='AccountOpen']"

如果需要,您可以删除链接的ID部分。