如何使用 selenium API for python 在给定网页上单击随机链接。? 我正在使用python 2.7。谢谢
问问题
6182 次
3 回答
9
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()
于 2013-06-07T10:33:23.433 回答
1
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 不能很好地表达存储的元素。确保你有一个 catch all 'except' b/c 你会得到超时错误等,你想强制它点击随机链接。
于 2017-01-29T08:15:07.400 回答
0
如何生成页面上所有可用链接的列表,然后单击该列表中的随机元素?
list = driver.find_elements_by_tagname("a")
list[random.Random(0, len(list)].click()
(我希望这就是你在 python 2.7 中使用 random 的方式,我是 python 3.3 用户,对不起)
于 2013-06-07T10:16:57.077 回答