使用 Selenium 和 Python 单击下拉列表中的元素 [英] Click on element in dropdown with Selenium and Python

查看:77
本文介绍了使用 Selenium 和 Python 单击下拉列表中的元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 MacOS 上使用 Selenium 和 Chrome webdriver 需要单击下拉元素.但是总是有找不到的错误.将此 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,所以我有这个代码:

self.driver.find_element_by_xpath('//[@id="periodoExtrato"]/option[4]').click()

但是有一个错误:

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)

推荐答案

一个问题是 中的 后面的元素,所以硒找不到它.添加这个字符串后问题解决了.

A problem is that element goes after </head> in <frameset>, so selenium can't find it. After adding this string problem solved.

browser.switch_to_frame('name')

在那之后

self.driver.find_element_by_xpath('//[@id="periodoExtrato"]/option[4]').click()

这篇关于使用 Selenium 和 Python 单击下拉列表中的元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆