2017-01-04 3 views
1

Я хотел знать, было ли все равно, чтобы кто-то случайно щелкнул в пределах определенной области на данной странице, используя селен.Как щелкнуть случайно на странице с помощью Selenium (python) и как увеличить масштаб страницы?

Кроме того, кто-нибудь знает, как увеличить масштаб до указанной области страницы. Например, страница x на y, но я хочу увеличить масштаб до области координат, представляющей определенную область на исходной странице (0, 1/4 x) на (0, 1/4 y) или (1/4 x, 2/4 x) на (1/4 y, 2/4 y), при этом содержимое изменяется, когда один масштабируется в определенную область страницы.

код в моей голове выглядит следующим образом:

For i in x: 
    Page = driver.zoom((x1, x2), (y1, y2)) # where x1 to x2 is the horizontal of the page and the y1 to y2 are the vertical dimensions of where I want to look 
    x_coord = random.uniform(x1, x2) #randomly pulling x coord 
    y_coord = random.uniform(y1, y2) #randomly pulling y coord 
    webdriver.click(x_coord, y_coord) 
    webdriver.read_page() 

Кто-нибудь знает, как это можно реализовать?

+0

получить все URL-адреса из области в список. Используйте «случайный» модуль, чтобы выбрать один из URL-адресов в списке. Используйте «Selenium», чтобы щелкнуть по этому URL-адресу. – boardrider

ответ

0

Лучше всего использовать css-селектор при поиске элементов, которые являются динамическими, поскольку они менее всего изменяются.

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», вы получите ошибки таймаута и т. Д., И вы хотите заставить его нажать на случайную ссылку.