首页 > 解决方案 > 如何使用 Selenium 和 Python 从下拉菜单中选择项目?

问题描述

我有一个下拉菜单,需要根据其值选择一个项目。假设我想选择值“50.0” 在此处输入图像描述

表格的完整 HTML 在帖子的末尾:下面的代码可以基于 ID 工作(但问题是每次我重新加载页面时 ID 都会更改,所以我必须在我的代码中更新它)。

                width = browser.find_element_by_css_selector("#linemodechannelwidth > tbody > tr > td.dijitReset.dijitStretch.dijitButtonContents > div.dijitReset.dijitInputField.dijitButtonText > span")
                actions3 = ActionChains(browser)
                actions3.click(width).perform()
                time.sleep(4)
                spacing50 = browser.find_element_by_css_selector('#dijit_MenuItem_27_text')
                spacing50.click()

应该使用什么代码根据其值而不是 ID 从下拉框中选择值 50.0 ?

以下是此下拉菜单的 HTML:

<table class="dijit dijitReset dijitMenuTable dijitSelectMenu dijitValidationTextBoxMenu dijitMenu dijitMenuPassive" role="listbox" tabindex="0" cellspacing="0" id="linemodechannelwidth_menu" widgetid="linemodechannelwidth_menu" style="top: 0px; visibility: visible;" aria-labelledby="linemodechannelwidth">
          <tbody class="dijitReset" data-dojo-attach-point="containerNode"><tr class="dijitReset dijitMenuItem" data-dojo-attach-point="focusNode" role="option" tabindex="-1" id="dijit_MenuItem_27" aria-label="50.0 " aria-disabled="false" widgetid="dijit_MenuItem_27" aria-selected="false" style="user-select: none;">
          <td class="dijitReset dijitMenuItemIconCell" role="presentation">
                         <span role="presentation" class="dijitInline dijitIcon dijitMenuItemIcon dijitNoIcon" data-dojo-attach-point="iconNode"></span>
          </td>
          <td class="dijitReset dijitMenuItemLabel" colspan="2" data-dojo-attach-point="containerNode,textDirNode" role="presentation" id="dijit_MenuItem_27_text">50.0</td>
          <td class="dijitReset dijitMenuItemAccelKey" style="display: none" data-dojo-attach-point="accelKeyNode" id="dijit_MenuItem_27_accel"></td>
          <td class="dijitReset dijitMenuArrowCell" role="presentation">
                         <span data-dojo-attach-point="arrowWrapper" style="visibility: hidden">
                                       <span class="dijitInline dijitIcon dijitMenuExpand"></span>
                                       <span class="dijitMenuExpandA11y">+</span>
                         </span>
          </td>
37.5 + 62.5 + 75。0 + 87.5 +

标签: pythonhtmlselenium

解决方案


例如:假设下拉列表的 id 为“12345”

并且有:

< option value="x"> A < /option> 
< option value="y"> B < /option>
< option value="z"> C < /option>

首先捕获 selenium 中的选项: => options_list = new Select(driver.findElement(By.id("1234")));

如果您想通过可见的下拉项进行选择:(可以说“A”)=> options_list.selectByVisibleText("A")

如果你想通过下拉数字选择项目(让我们说第二个项目)=> options_list.selectByIndex(1)


推荐阅读