使用Selenium单击菜单选项

lf5gs5x2  于 2022-11-24  发布在  其他
关注(0)|答案(2)|浏览(134)

我有一个这样的下拉菜单。使用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">
当我尝试使用下面的代码鼠标悬停到文档链接是happend!!和鼠标指针移动到'应用程序配置'选项。但点击事件没有发生。这怎么可能

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();

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

cotxawn7

cotxawn71#

不需要在xpath中传递索引,在html中href是唯一的。所以你可以直接给予xpath。比如:

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

bwntbbo32#

直接点击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”在我的设置中不是有效的目标)。

相关问题