向下滚动,直到在Python中找到元素

时间:2020-03-08 18:09:31

标签: javascript python-3.x selenium-webdriver scroll element

所以基本上我想创建一个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 :(得分:0)

这不一定要用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 id在硒之前加载 开始搜索它,假设它不会随页面一起加载 立即。如果硒仍然看不到add friend,那么我会 建议您使用expected_conditionWebDriverWait, 我完全怀疑它能否达到目标

如果显式等待不起作用,则应检查页面的该部分是否存在于iframe或其他框架上