让Selenium连续点击同一类元素n次

1 投票
3 回答
1054 浏览
提问于 2025-04-18 07:29

我有一个页面,上面有25家公司,它们都在同一个类别里。这里是网站的链接 - 这是HTML代码:

<section class="rslwrp">
    <section class="jbbg">..</section>
    <section class="jbbg">..</section>
    <section class="jbbg">..</section>
    <section class="jbbg">..</section>
    <section class="jbbg">..</section>
    <section class="jbbg">..</section>
    ******and so on******

我不太确定怎么用Selenium点击一个类别,然后用浏览器的返回功能,再点击第二个,然后再返回,再点击第三个,依此类推,直到点击完所有的公司。

我正在使用:

browser.find_element_by_xpath('//section[@class="jbbg"]/section[2]/section[1]/aside[1]/p[1]/span/a').click()

有人能给我点建议吗?非常感谢你的帮助。

3 个回答

0

最简单的方法就是使用 find_elements_by_xpath,然后遍历这个列表:

linksCount = len(browser.find_elements_by_xpath('//section[@class="jbbg"]/section[2]/section[1]/aside[1]/p[1]/span/a'))
for x in range(linksCount)
    browser.find_element_by_xpath('(//section[@class="jbbg"]/section[2]/section[1]/aside[1]/p[1]/span/a)[' + x + ']')
0

正如之前的帖子提到的,你需要逐个点击它们。不过,在循环里,你得找到应用程序的返回按钮或者浏览器的返回按钮,这样才能回到上一页。

但是,要注意的是,一旦你回到上一页,之前用 find_elements 找到的元素可能就不再有效了,因为网页可能重新加载了。所以,你可能需要在循环里重新找到同样的元素,这样程序才能正常工作。

4

遍历通过 find_elements_by_xpath() 方法找到的所有结果,获取所有链接,然后逐个使用 get() 方法打开它们:

links = [link.get_attribute('href') for link in browser.find_elements_by_xpath('//span[@class="jcn"]/a')]
for link in links:
    browser.get(link)

撰写回答