如何遍历下拉列表并单击每个选项?

2024-10-03 09:10:03 发布

您现在位置:Python中文网/ 问答频道 /正文

dropdownlist的id不断变化,代码如下:

    <select class="select150" 
    onchange="document.getElementById('id1e_hf_0').value='? 
    wicket:interface=:5:remitReaderSearchForm:orgSelection::
    IOnChangeListener::&amp;
    wicket:pcxt=RemitReaderSearchPage';document.getElementById
   ('id1e').submit();" name="orgSelection" id="id1f">
  <option value="">Select One</option>
  <option value="7623">MCH - Cardiovascular Surgery</option>
  <option value="7598">MCH - Dept. of Orthopedics</option>
  <option value="7610">MCH - Emergency Physicians</option>
  <option value="7603">MCH - ENT</option>
  <option value="13043178">MCH Telehealth</option>
  <option value="13043153">NCH Genetics</option>
  <option value="13043155">NCH Hospitalist</option>
  <option value="13007836">NCH Neurology</option>
  </select>

代码如下:

^{pr2}$

回溯:

  select = Select(driver.find_element_by_class_name("select150"))
  File "C:\Users\dm050767\Python27\lib\site- 
  packages\selenium\webdriver\remote\webdriver.py", line 555, in 
  find_element_by_class_name
  return self.find_element(by=By.CLASS_NAME, value=name)
  File "C:\Users\dm050767\Python27\lib\site- 
  packages\selenium\webdriver\remote\webdriver.py", line 955, in 
  find_element
  'value': value})['value']
  File "C:\Users\dm050767\Python27\lib\site- 
  packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
  self.error_handler.check_response(response)
  File "C:\Users\dm050767\Python27\lib\site- 
  packages\selenium\webdriver\remote\errorhandler.py", line 242, in 
  check_response
  raise exception_class(message, screen, stacktrace)
  selenium.common.exceptions.NoSuchElementException: Message: no such 
 element: Unable to locate element: {"method":"class 
 name","selector":"select150"}
(Session info: chrome=65.0.3325.181)
(Driver info: chromedriver=2.37.544315 

(730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),平台=Windows NT 10.0.15063 x86英寸(64英寸)


Tags: namevaluelibseleniumsiteelementfindusers
1条回答
网友
1楼 · 发布于 2024-10-03 09:10:03

要选择所有选项,您需要使用range(0, len(options))而不是range(0, len(options) - 1)。在

注意,range(start, end)将生成从start(包括)到{}(不包括)的索引

也可以尝试使用以下循环:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC

select = Select(wait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "select150"))))
options = select.options

for option in options:
    select.select_by_visible_text(option.text)

相关问题 更多 >