javascript - 使用Python-Selenium过滤信息时点击不起作用

标签 javascript python html selenium

我正在尝试使用 Python-Selenium 从纽约马拉松下载运行者信息(参见: http://results.nyrr.org/event/M2016/finishers )。我想按性别和年龄组过滤这些信息,所以我编写了以下代码:

browser = webdriver.Chrome()
browser.get('http://results.nyrr.org/event/M2016/finishers')
browser.maximize_window()

gender_menu = browser.find_element_by_xpath("//div[@class='dropdown dropdown-
main short-filter']")
gender_menu.click()
gender_menu.find_element_by_xpath("//ul[@role='menu']/li[3]").click()

age_menu = browser.find_element_by_xpath("//div[@class='dropdown dropdown-
main short-filter ages-filter']")
age_menu.click()
age_menu.find_element_by_xpath("//ul[@role='menu']/li[3]").click()

问题是 age_menu.find_element_by_xpath("//ul[@role='menu']/li[3]").click() 部分给了我异常(exception)“Element Not当我使用 /li[1]/li[2]/li[3] 时可见”,但当我使用时不可见/li[4] 或更高的索引。

.click 是否会给出此异常,因为我在选择性别时也使用了它?请注意,性别有 3 个选项,从第四组开始我只能按年龄组进行筛选。任何帮助将不胜感激!

最佳答案

不确定以下实现是否是您正在寻找的,但它对我有用

age_menu = browser.find_element_by_xpath("//div[@class='dropdown dropdown-
main short-filter ages-filter']")
age_menu.click()
ages = age_menu.find_elements_by_css_selector('ul[role="menu"]>li>a')
for age in ages:
if age.text == 'AGE: 20-24':
    age.click()
    break

关于javascript - 使用Python-Selenium过滤信息时点击不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45827007/

相关文章:

javascript - 限制显示寻呼机的分页数

python - 打印矩阵时如何显示列号和行号?

Python - 通过 lxml 添加顶级评论

html - 在 firefox 和其他浏览器中遇到 ul 问题

javascript - 仅当可放置 div 中没有子项时如何拖放?

javascript - 使用 Javascript/jQUery 测量 HTML 中的字符串长度

javascript - 可拖动 div 来控制溢出 div

javascript 数组到 php 文件

javascript - 检查页面中的所有下拉菜单是否都有选定的选项

python - 如何使用 Scapy 在 DHCP header 中添加参数请求列表?