使用 selenium 单击菜单选项

问题描述 投票:0回答:2

我有一个像这样的菜单下拉菜单。 使用selenium,我需要将鼠标移动到菜单项“文档”,然后单击“应用程序配置”选项。 鼠标悬停工作正常。但无法单击选项元素应用程序配置。

    <li class="current">
    <a href="/docs">Documentation</a>
    <ul class="list-unstyled">
        <li>
            <a href="/docs">API Reference</a>
        </li>

        <li><a href="/docs/api/oauth2">OAuth 2.0 Guide</a></li>


        <li class="current"><a href="/docs/configuration">App Configuration</a></li>
        <li><a href="/docs/guidelines">Tech Guidelines</a></li>
        <li><a href="/docs/best-practices">Best Practices</a></li>
    </ul>
</li>
<li class="">
    <a href="/tools">Tools</a>
    <ul class="list-unstyled">
        <li><a href="/tools/quickstart">Quick Start</a></li>
        <li><a href="/tools/testing">Testing</a></li>
        <li><a href="/tools/devbox">Developer STB</a></li>
        <li><a href="/tools/reference">Reference Apps</a></li>


    </ul>
</li>
<li>
    <a href="/updates">Updates</a>
</li>   

当我将鼠标悬停在任何菜单链接(例如文档或工具)上时,

<li class=""> becomes  <li class="open">

当我尝试使用下面的代码时,鼠标悬停到文档链接发生了! 并且鼠标指针移至“应用程序配置”选项。但是单击事件没有发生。这怎么可能

Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("//a[@href = '/docs'"));
action.moveToElement(we).build.perform();

WebElement config = webdriver.findElement(By.xpath("(//a[contains(@href,'/docs/configuration')])[1]));
action.moveToElement(config).click().build.perform();

我需要单击应用程序配置选项

java javascript html selenium
2个回答
0
投票

xpath中不需要传递index,html中的href是唯一的。所以你可以直接给出xpath。喜欢:

   WebElement config = webdriver.findElement(By.xpath("//a[contains(@href,'/docs/configuration')]"));

0
投票

直接点击WebElement调用(无需

Actions
):

By loc = By.xpath("(//a[contains(@href,'/docs/configuration')])[1]");
WebElement config = webdriver.findElement(loc);
config.click();

适用于我的 selenium-java-2.44.0(尽管“/docs/configuration”不是我的设置中的有效目标)。

© www.soinside.com 2019 - 2024. All rights reserved.