当前位置: 首页 > 知识库问答 >
问题:

Selenium无法单击引导下拉菜单中的菜单项

吕俊才
2023-03-14
Actions action = new Actions(driver);
        WebElement we = driver.findElement(By.xpath("//*[@id='ctl00_Sitemap1_HyperLink1']"));
        action.moveToElement(we).build().perform();
        WebElement tmpElement= driver.findElement(By.xpath("//*[@id='ctl00_Sitemap1_HyperLink1']"));
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("arguments[0].click();", tmpElement);
        List<WebElement> dd_list = driver.findElementsByXPath("//*[@id='masterNavigation']/ul/li[1]/ul/li"); 
           for (WebElement ele : dd_list) 
           {     
              System.out.println("Values " + ele.getAttribute("innerHTML"));     
              if (ele.getAttribute("innerHTML").contains("Event Dashboard")) {                   
                 ele.click();                                        
                 break;  
              } 
           }    
    }

嗨,我正在尝试自动启动下拉菜单。默认情况下,它的可见性是隐藏的。将鼠标悬停在它上面时,它的可见性属性显示为可见。我可以单击下拉菜单,但是在单击下拉菜单后,我的selenium脚本不能从下拉菜单中选择值。

错误:线程"main"org.openqa.selenium.ElementNotVisibleException异常:无法单击元素

HTML代码段

<a class="ui-button-text-icons" id="ctl00_Sitemap1_HyperLink1" href="javascript:void(void);">
    <span style="padding-right: 1.3em;">Dashboards</span>
    <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s"></span>
</a>
<ul style="visibility: hidden;">
    <li class="first featureGranted">
        <a href="ClassicDashboard.aspx">Classic Dashboard</a>
    </li>
</ul>

共有1个答案

王棋
2023-03-14

几件事

  • 您不需要遍历所有li元素来找到您想要的元素,您可以使用Xpath
  • 我不知道为什么您使用JavaScript单击first Element,但除非Selenium提供的单击方法不起作用,否则我建议不要使用JavaScript Click
  • 错误提示元素不可见,可能是由于多种原因。您可以使用显式等待,直到元素可见,如下所述。它可能会解决您的问题

密码

Actions action = new Actions(driver);
WebElement we = driver.findElement(By.xpath("//*[@id='ctl00_Sitemap1_HyperLink1']"));
action.moveToElement(we).build().perform();
WebElement tmpElement= driver.findElement(By.xpath("//*[@id='ctl00_Sitemap1_HyperLink1']"));
JavascriptExecutor js = (JavascriptExecutor) driver;
// I have no idea why you are clicking using JavaScript
js.executeScript("arguments[0].click();", tmpElement);

WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement eventDashboardMenu = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[contains(text(),'Event Dashboard')]")));
eventDashboardMenu.click();
 类似资料:
  • 我试图创建一个自动的网络会话,我登录到一个网站,并从下拉框中选择一个选项。我能够使用硒进入页面,但我无法点击打开下拉菜单的栏,然后选择我想要的选项。这是页面的截图,它的超文本标记语言代码:[![在此输入图像描述][1]][1][![在此输入图像描述][2]][2] 我想单击下拉列表中的“降级性能”选项。我有点被困在这里,因为下拉列表的HTML与[this one][3]根本不相似(无法“选择”)。

  • 下面是正确的错误消息:Traceback(最近的调用):文件“C:/users\shishir sinha/pycharmprojects/australia/australia.py”,第33行,in driver.find_element_by_xpath(“.//[@id='ui-menu-0-1']”)。单击()文件“C:\users\shishir sinha\appdata\local

  • 我有在下拉列表中选择每个选项的测试用例,但无论我目前做什么,我都会遇到这个错误。 结果消息:系统。InvalidOperationException:元素在点(1170.0333251953125405.4250030517578)处不可单击,因为另一个元素遮挡了它 目前正试图用这个代码改变年份 - WebElement是这样定义的 这是selenium尝试选择拾取时下拉列表的样子。我看不到任何东

  • 我使用javascript函数启动引导下拉菜单,如他们的文档中所述。 通常,每当您在下拉列表外部单击或选择其中一个选项时,下拉列表都会隐藏。 通过javascript启动时不会发生这种情况。 在此复制中,您将看到两个菜单: 使用"组件"触发器按预期工作的人 另一个,使用右键单击,它不像预期的那样工作。(它不会在单击外部或甚至在元素单击时关闭) 当我在下拉菜单外单击时,我可以通过以下方式“手动”摆脱

  • 关于我的上一个问题(bootstrap上的下拉菜单不起作用),我正在为li下拉菜单的子菜单构建一个子菜单。这意味着它是嵌套的。银行菜单下有交易下拉菜单,交易下拉菜单下有不同类型交易的菜单。顺便说一下,我已经成功地创建了它,但是在悬停期间,“事务”模块的子菜单出现在事务菜单的前面,阻止了作为事务的父菜单。在悬停期间,如何避免它并将其放置在事务菜单的右侧?不管怎样,我已经使用了“右下拉菜单”,但它不会

  • 在测试我的Web应用程序时,我无法单击菜单项(创建缺陷…),如图所示 下面的代码点击图像(手部图像),如图所示 然后菜单打开。现在我想单击菜单项。我正在为此使用下面的代码 但我得到了上面提到的例外。 这是我在网页上的内容: 你能建议一下吗?