让Selenium连续点击同一类元素n次
我有一个页面,上面有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)