我正在尝试使用python和Selenium创建我的第一个项目,我是新手,它只是一个简单的项目,询问用户他/她的Facebook用户名和密码,然后登录重定向到facebook.com / user / follow page并取消关注用户关注的所有人。
这是我的代码吼叫
我使用此代码导入了必要的模块
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")
这是点击我想要的地方的点击功能,这就是我的问题所在。 我想开始点击以下所有点击功能。 [检查img]
def click():
xpath = "//a[@role='button']"
a=driver.find_elements_by_xpath(xpath)
for posts in a:
posts.click()
但我现在的问题是这个(以下按钮没有任何类或id,除了锚属性“role ='button')..
代码可以正常工作,但它们是网页上具有相同role ='button'属性的其他元素,如下面的pix: Toolbar facebook工具栏有相同的角色按钮东西.. 我的问题是: 如何让Selenium跳过工具栏并开始点击以下按钮..
很抱歉,如果我的解释很糟糕...... 我很乐意感谢任何机构的帮助..
先谢谢
答案 0 :(得分:0)
我在Facebook上关注马克·扎克伯格,这是点击取消关注链接的xpath:
//a[text()='Mark Zuckerberg']/../../following-sibling::div[2]/a
同样,您可以在您的案例中替换Person的名称以单击取消关注链接。
如果您的朋友没有跟随您关注的人,那么您也可以使用此XPATH:
//a[contains(@data-hovercard,'/ajax/hovercard/user.php?')]/../../following-sibling::div/a
这与人名无关。请注意,这将为您提供Web元素列表而不是单个元素。 [这非常适合您的要求,因为您想要点击每个取消关注的链接]。
HTH!