【问题标题】:click a menu option using selenium使用 selenium 单击菜单选项
【发布时间】:2015-08-22 14:12:38
【问题描述】:

我有一个这样的菜单下拉菜单。 使用 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>   

当我将鼠标悬停在文档或工具等任何菜单链接上时,&lt;li class=""&gt; becomes &lt;li class="open"&gt;

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

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


【解决方案1】:

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

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

【讨论】:

  • 在我的网页中没有它包含多个'/docs/configuration href's 那是我使用的。
  • 如果该索引不存在,那么鼠标指针将如何移动到该元素。现在正在发生这种情况
  • 你能发布你的网站吗..?
  • 尝试使用这个 xpath:" By.xpath("//li[@class='current']/a[text()='App Configuration']") .
  • org.openqa.selenium.NoSuchElementException: 无法定位元素:{"method":"xpath","selector":"//li[@class='open']/a[text ()='应用配置']"}
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多