Прокрутите вниз, пока элементы не будут найдены в Python - PullRequest
0 голосов
/ 08 марта 2020

Итак, в основном я хочу сделать скрипт на Facebook, который будет добавлять всех друзей из списка друзей в «Список друзей», теперь проблема в том, что у нас уже есть много общих друзей (которые показаны в верхней части «Друг» Список "), я хочу прокрутить весь путь вниз, пока не появится" Добавить друга ", и как только он появится, я хочу, чтобы скрипт щелкнул по кнопке и добавил его всех, кто не является моим другом. Теперь я довольно новичок в программировании, поэтому, если вы можете объяснить мне более подробно, как это сделать PS: я знаю, что это должно быть сделано в Java, но кто-то может объяснить мне, как это сделать в Python?

Вот код:

root.get(targets_url)        #targets_url is the link of targets friend list
time.sleep(10)

while True:
    element = root.find_element_by_class_name('FriendRequestAdd').click()

1 Ответ

0 голосов
/ 08 марта 2020

Это не нужно делать в Java, python будет работать просто отлично. Вам не обязательно прокручивать туда, где появляется add friends, вы можете использовать find_element_by_id или любой другой метод поиска элементов, и он все равно найдет его. Но если вы действительно настроены на поиск и прокрутку элемента.

from selenium.webdriver.ui.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

wait = WebDriverWait(root)     

root.wait(3) #wait for element to visible. implicit wait.

#feel free to change XPATH to CSS_SELECTOR or whatever suits you
friendlist = wait.until(ec.element_to_be_clickable((By.XPATH,'xpath value'))  #explicitly wait for element to appear on the page
root.execute_script("arguments[0].ScrollIntoView;", friendlist)
friendlist.click()

Подождите, пока идентификатор add friend загрузится, прежде чем селен начнет его искать, предполагая, что это не так. Не загружайте страницу сразу. Если селен все еще не видит add friend, то я бы порекомендовал вам использовать expected_condition и WebDriverWait, хотя я очень сильно сомневаюсь, что это дойдет до

Если явное ожидание делает не работает, тогда вам следует проверить, существует ли эта часть страницы в iframe или в другом фрейме

...