如何从硒的下拉列表中选择选项?

时间:2020-10-16 17:13:02

标签: html python-3.x selenium

我一直在搜索包括该网站在内的其他网站以寻求解决方案,但是还没有任何运气,我使用硒浏览的网站是用HTML4编写的,我不确定这是否重要,但确实希望包含它

我目前正在使用的用于尝试从下拉列表中选择特定选项的特定功能的代码。

program_selection = driver.find_element_by_id('pgmSelectList').click()
for option in program_selection.find_element_by_name('offerVB.currentProgramCode'):
    if option.text == 'New Maximum Care (Minimum 5/60 PT Warranty)':
        option.click() # select() in earlier versions of webdriver
        break

下面是我正在尝试使用的当前HTML元素,我也尝试了最后不使用'.click()',因为我已经阅读了很多我不需要这样做的地方,但是使用当前代码,我实际上打开了列表,只是它没有选择任何选项,我还尝试将箭头键发送到元素以选择某些内容,但是我收到一条错误消息,指出该元素没有属性send_keys。 / p>

<select name="offerVB.currentProgramCode" onchange="return isProgramSelected()" class="tableCell" id="pgmSelectList"><option value="" selected="selected">Select</option>
      

       <option value="COMMPLANS:2018-01-03">NEW VEHICLE COMMERCIAL PLANS</option>
      

       <option value="USDCOMMPLN:2016-09-01">USED VEHICLE COMMERCIAL PLANS</option>
      

       <option value="MOPAR75:2012-01-31">MOPAR 'TARGETED' OPTIONS</option>
      

       <option value="RAMADVNTGE:2010-02-01">RAM ADVANTAGE MAXIMUM CARE</option>
      

       <option value="PWRCARE510:2009-10-01">NEW POWERTRAIN CARE (MINIMUM 5/60 PT WARRANTY)</option>
      

       <option value="ADDCARE510:2009-10-01">NEW ADDED CARE PLUS (MINIMUM 5/60 PT WARRANTY)</option>
      

       <option value="MAXCARE510:2009-10-01">NEW MAXIMUM CARE (MINIMUM 5/60 PT WARRANTY)</option>
      

       <option value="MONEYBK510:2009-10-01">MONEY BACK GUARANTEE (MINIMUM 5/60 PT WARRANTY)</option>
      

       <option value="SHRTTRMLSE:2004-11-01">NEW SHORT TERM LEASE / RETAIL OPTIONS</option>
      

       <option value="POPWTN:2004-11-01">PRE OWNED POWERTRAIN CARE PLUS</option>
      

       <option value="POADDED:2004-11-01">PRE OWNED ADDED CARE</option>
      

       <option value="POADDPLUS:2004-11-01">PRE OWNED ADDED CARE PLUS</option>
      

       <option value="POMAX:2004-11-01">PRE OWNED MAXIMUM CARE</option>
      

       <option value="GAPINS:2004-11-01">GAP</option>
      

       <option value="CONVPLNPKG:2012-10-01">CONVENIENCE PLANS AND PACKAGES</option>
      

       <option value="MAINTPLANS:2012-10-01">MAINTENANCE PLANS AND PACKAGES</option>
      

       <option value="LUBEOIL:2004-11-01">LUBE, OIL, OIL FILTER PACKAGES</option>
      

       <option value="BUSNESSLNK:2005-09-01">BUSINESSLINK / SMALL BUSINESS PLANS</option></select>

如何使硒从此列表中选择一个选项?这是我第一次真正使用硒。

编辑:我目前正在尝试此代码:

driver.find_element_by_id("//select//*[@id='pgmSelectList']/option[text()='MAXCARE510:2009-10-01']").click()

我收到此错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="//select//*[@id='pgmSelectList']/option[text()='MAXCARE510:2009-10-01']"]"}
(Session info: chrome=86.0.4240.75)

1 个答案:

答案 0 :(得分:0)

您可以使用Select类来完成这项工作,

from selenium.webdriver.support.ui import Select

#Click on the drop down list to enable the options under it.
driver.find_element_by_id("pgmSelectList").click()
myDDList = Select(driver.find_element_by_id("pgmSelectList"))

#Pass the value to select
myDDList.select_by_value("USDCOMMPLN:2016-09-01")

#select by visible text
myDDList.select_by_visible_text("USED VEHICLE COMMERCIAL PLANS")