如何使用selenium API for python点击给定网页上的随机链接。 ? 我正在使用python 2.7。 感谢
答案 0 :(得分:4)
find_elements_by_tagname()肯定会奏效。还有另一种选择。您可以使用find_elements_by_partial_link_text来传递空字符串。
>>> from selenium import webdriver
>>> from random import randint
>>> driver = webdriver.Firefox()
>>> driver.get('http://www.python.org')
>>> links = driver.find_elements_by_partial_link_text('')
>>> l = links[randint(0, len(links)-1)]
>>> l.click()
答案 1 :(得分:0)
如何生成页面上所有可用链接的列表,然后单击该列表中的随机元素?
list = driver.find_elements_by_tagname("a")
list[random.Random(0, len(list)].click()
(我希望你在python 2.7中使用随机数,我是一个python 3.3用户,抱歉)
答案 2 :(得分:0)
driver = webdriver.Firefox()
driver.get('https://www.youtube.com/watch?v=hhR3DwzV2eA')
# store the current url in a variable
current_page = driver.current_url
# create an infinite loop
while True:
try:
# find element using css selector
links = driver.find_elements_by_css_selector('.content-link.spf-link.yt-uix-sessionlink.spf-link')
# create a list and chose a random link
l = links[randint(0, len(links) - 1)]
# click link
l.click()
# check link
new_page = driver.current_url
# if link is the same, keep looping
if new_page == current_page:
continue
else:
# break loop if you are in a new url
break
except:
continue

创建列表工作,但如果您遇到类似我的问题,请使用此代码,如果您不断收到超时错误,或者您的网络驱动程序不是一直点击链接。
作为一个例子,我使用了YT视频。假设你想点击右侧的推荐视频,那么它有一个独特的css选择器用于这些链接。
你想要进行无限循环的原因是b / c,当你制作一个元素列表时,由于某种原因,python不能很好地表达存储的元素。除了' b / c你会得到Timeout Errors等等,你想强迫它点击随机链接。