如何使用selenium和python单击网页上的所有“role =按钮”

时间:2018-06-03 16:44:36

标签: python python-3.x selenium selenium-webdriver selenium-chromedriver

我正在尝试使用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()

CLICK ON FOLLOWING

但我现在的问题是这个(以下按钮没有任何类或id,除了锚属性“role ='button')..

代码可以正常工作,但它们是网页上具有相同role ='button'属性的其他元素,如下面的pix: Toolbar facebook工具栏有相同的角色按钮东西.. 我的问题是: 如何让Selenium跳过工具栏并开始点击以下按钮..

很抱歉,如果我的解释很糟糕...... 我很乐意感谢任何机构的帮助..

先谢谢

1 个答案:

答案 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!