使用Python-Selenium过滤掉信息时,点击无效

时间:2017-08-22 21:08:43

标签: 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()/li[1]/li[2]时,/li[3]部分给了我“元素不可见”的注释,但是当我使用{}时/li[4]或更高的索引。

.click是否可以提供此异常,因为我在选择性别时也会使用它?请注意,性别有3个选项,我只能按年龄组过滤自第四组。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

不确定以下实施是否符合您的要求,但它适用于我

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