我正在尝试使用 python 和 Selenium 创建我的第一个项目,我是新手,这只是一个简单的项目,要求用户输入他/她的 facebook 用户名和密码,然后登录重定向到 facebook.com/user/following 页面并取消关注用户关注的每个人。
这是我的代码
我使用此代码导入了必要的模块
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import selenium
import time
我关闭了Facebook弹出通知以避免代码中断。
##SHUTTING POPUP NOTIFICATION
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
chrome_options.add_experimental_option("prefs", prefs)
chrome_options.add_argument("start-maximized")
chrome_options.add_argument("start-maximized")
driver = webdriver.Chrome(chrome_options=chrome_options)
定义了一个登录func
,该在打开Facebook后接受用户名和密码。
def login():
#Login
user = input('Whats your username or email ')
passw = input('Input your password ')
driver.get("https://www.facebook.com/")
username = driver.find_element_by_name("email")
username.send_keys(user)
password = driver.find_element_by_name("pass")
password.send_keys(passw)
password.send_keys(Keys.RETURN)
接下来,我创建了一个 3 秒时间函数
def timeToSleep():
time.sleep(3)
getPage函数是用于重定向到我的目的地的功能,即用户关注
def getPage():
##Get Page
driver.get("https://www.facebook.com/Username/ID/following")
这是点击功能,用于点击我想要的地方,这就是我的问题所在。 我想开始点击下面的所有内容,点击功能在下面。. [检查图像]
def click():
xpath = "//a[@role='button']"
a=driver.find_elements_by_xpath(xpath)
for posts in a:
posts.click()
点击关注
但是我现在的问题是这个(以下按钮除了锚属性"role='button'"之外没有任何类或 id(。
代码本来可以正常工作,但它们是网页上具有相同 role='button' 属性的其他元素,如下面的像素: 工具栏 Facebook工具栏具有相同的角色按钮内容。 我的问题是这样的: 如何使硒跳过工具栏并开始从以下按钮单击。
所以对不起,如果我的解释不好... 我很乐意感谢任何机构的帮助。
提前致谢
我在Facebook上关注马克扎克伯格,这是点击取消关注链接的xpath:
//a[text()='Mark Zuckerberg']/../../following-sibling::div[2]/a
同样,您可以在您的案例中替换人员名称以单击取消关注链接。
如果您的朋友都没有关注您关注的人,那么您也可以使用此 XPATH:
//a[contains(@data-hovercard,'/ajax/hovercard/user.php?')]/../../following-sibling::div/a
这与人名无关。请注意,这将为您提供 Web 元素列表,而不是单个元素。[这非常适合您的要求,因为您想单击每个取消关注链接]。
哼!