繁体   English   中英

如何使用Selenium和python单击网页上的所有“ role = button”

[英]How to Click on all “role=button” on a webpage using selenium and python

我正在尝试使用python和Selenium创建我的第一个项目,但是我是一个新手,它只是一个简单的项目,要求用户提供他/她的Facebook用户名和密码,然后登录重定向到facebook.com/user/下一页并取消关注用户关注的所有人。

这是我的代码

我使用此代码导入了必要的模块

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 ,该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()

点击以下

但是我现在的问题是(除了锚属性“ role ='button'”之外,以下按钮没有任何类或ID)。

该代码可以正常工作,但它们是网页上具有相同role ='button'属性的其他元素,例如下面的pix: 工具栏 facebook工具栏具有相同的角色按钮内容。我的问题是:我如何使Selenium跳过工具栏,然后从以下按钮开始单击。

很抱歉,如果我的解释不好...我将非常感谢任何机构的帮助。

提前致谢

我在Facebook上关注Mark Zuckerberg,这是单击取消关注链接的xpath:

//a[text()='Mark Zuckerberg']/../../following-sibling::div[2]/a  

同样,您可以在情况下替换Person的名称,以单击Unfollow链接。

如果您的朋友中没有一个跟随您关注的人,那么您也可以使用此XPATH:

//a[contains(@data-hovercard,'/ajax/hovercard/user.php?')]/../../following-sibling::div/a   

独立于人名。 请注意,这将为您提供Web元素列表,而不是单个元素。 [这很适合您的要求,因为您想单击每个取消关注链接]。

HTH!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM