2013-06-07 2 views
1

Как я могу нажимать на случайную ссылку на данной веб-странице, используя selenium API для python. ? Я использую python 2.7. ThanksНажмите на произвольную ссылку на веб-странице, используя selenium API для python

+0

Почему вам нужно щелкнуть случайную ссылку? Где ценность в этом? – Arran

+0

@Arran полезен для задачи автоматического создания трафика – user1264304

ответ

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() 
+0

@ спасибо. Это помогло. Я использовал ** метод выбора ** для получения случайного элемента списка, например. 'l = выбор (ссылки)' после импорта ** выбор ** из ** случайного ** модуля – user1264304

0

Как насчет создания списка всех доступных ссылок на странице, а затем щелчка по случайному элементу из этого списка?

list = driver.find_elements_by_tagname("a") 
list[random.Random(0, len(list)].click() 

(я надеюсь, что, как вы используете случайным образом в Python 2.7, я пользователь питона 3,3, извините)

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

Создание списка работ, но если у вас возникли проблемы, как мне использовать этот код, если вы получаете тайм-аута ошибка или ваш WebDriver не последовательно нажав на ссылку.

В качестве примера я использовал видео YT. Предположим, вы хотите щелкнуть рекомендованное видео с правой стороны, ну, у него есть уникальный селектор css для этих ссылок.

Причина, по которой вы хотите создать бесконечный цикл, - это b/c, когда при составлении списка элементов по какой-то причине python не выполняет хорошую работу, выражая сохраненные элементы. Убедитесь, что у вас есть «все», кроме «b/c», вы получите ошибки таймаута и т. Д., И вы хотите заставить его нажать на случайную ссылку.