单击Selenium和Python下拉列表中的元素

2024-10-01 02:33:07 发布

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

使用Selenium和Chrome,MacOS上的webdriver需要单击dropdown元素。但总有找不到的错误。将此html代码放在它所在的页面上:

<select id="periodoExtrato" name="periodoExtrato" class="EXTtexto" onchange="enviarExtrato(document.formperiodo.periodoExtrato[document.formperiodo.periodoExtrato.selectedIndex].value);">
<!--<option value="01" >&Uacute;ltimo dia</option>-->
<option value="03" selected="true">Últimos 3 dias</option>
<option value="05">Últimos 5 dias</option>
<option value="07">Últimos 7 dias</option>
<option value="15">Últimos 15 dias</option>
<option value="30">Últimos 30 dias</option>
<option value="X">Data específica (até 60 dias)</option>
<option value="D">Mês completo (desde 2002)</option>
</select>

我需要选择Últimos 15 dias,所以我有这个代码:

^{pr2}$

但有一个错误:

Traceback (most recent call last):
  File "olxscrape.py", line 120, in <module>
    main()
  File "olxscrape.py", line 117, in main
    b = Bot()
  File "olxscrape.py", line 12, in __init__
    self.navigate()
  File "olxscrape.py", line 106, in navigate
    self.driver.find_element_by_xpath('//*[@id="periodoExtrato"]/option[4]').click()
  File "/Users/Lutchenko/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 293, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "/Users/Lutchenko/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 752, in find_element
    'value': value})['value']
  File "/Users/Lutchenko/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "/Users/Lutchenko/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="periodoExtrato"]/option[4]"}
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Mac OS X 10.12.2 x86_64)

Tags: inpyselfvalueseleniumlineelementfind
2条回答

我建议不要在这里使用xpath。相反,试试这样的方法:

 select = Select(self.driver.find_element_by_id('periodoExtrato'))
 option_indexes = range(1, len(select.options))
 for index in option_indexes:
    select.select_by_index(index)
    ......

问题是元素在<frameset>中位于</head>之后,所以selenium找不到它。添加此字符串后问题解决。在

browser.switch_to_frame('name')

之后呢

^{pr2}$

相关问题 更多 >