首页 > 解决方案 > 循环单击 Python 和 Selenium 上具有相同 CSS_SELECTOR 的所有链接

问题描述

我有以下 CSS_SELECTOR 在我的页面上出现 2 到 20 次,并且数字每天都在变化:

event = driver.find_elements(By.CSS_SELECTOR, ".sport-tennis .event-list .event-column-main")
random = event[randint(0, len(event)-1)]
random.click()

当点击它时,它会将我带到另一个页面,该页面的 url 每天都在变化,因此它不是固定的 url。现在,正如您所看到的,我是通过随机单击该 css_selector 来做到的,但我的问题是:有没有办法制作一个循环来单击所有上述 css_selector 而无需重复?

编辑:尝试了这个,但只点击了带有该css_selector的第一个链接并打开了页面,但是当返回主页时没有点击第二个链接,只是以退出代码0结束:

events = driver.find_elements(By.CSS_SELECTOR, ".sport-tennis .event-list .event-column-main")

for event in events:
    event.click()
    time.sleep(1)
    driver.find_element(By.CSS_SELECTOR, ".sport-tennis .flex-column .text-truncate").click()
    time.sleep(1)

标签: pythonseleniumloopsfor-loopcss-selectors

解决方案


我怀疑元素状态可能在每次迭代中都发生了变化,所以试试这个,

for i in range(len(events)):
    events = driver.find_elements(By.CSS_SELECTOR, ".sport-tennis .event-list .event-column-main")
    event[i].click()
    time.sleep(1)
    driver.find_element(By.CSS_SELECTOR, ".sport-tennis .flex-column .text-truncate").click()
    time.sleep(1)

推荐阅读