使用selenium API for python单击网页中的随机链接

时间:2013-06-07 09:06:56

标签: python selenium random hyperlink webpage

如何使用selenium API for python点击给定网页上的随机链接。 ? 我正在使用python 2.7。 感谢

3 个答案:

答案 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等等,你想强迫它点击随机链接。