python - 通过 find_element_by_class_name 单击按钮不起作用 python selenium webdriver 不工作

标签 python class selenium firefox

我正在尝试使用 Python 和 Selenium 在 LinkedIn 上添加联系人。我试图通过在具有无限滚动功能的“网络”选项卡 (https://www.linkedin.com/mynetwork) 中添加 LinkedIn 提供的联系人建议来实现此目的。

基本上我希望脚本找到每个建议配置文件旁边的“连接”按钮,单击该按钮,然后重复直到出现错误,脚本应向下滚动以加载更多“连接”按钮以重复。

我发现定位按钮元素的最佳方法是使用 find_element_by_class_name(),因为所有连接按钮都具有相同的类。我也尝试过使用 CSS 和 Xpath 定位元素,但没有成功。

问题:脚本能够点击第一个“连接”按钮,但之后就没有了。我已经尝试了很多实现的想法(通过 Xpath、CSS 定位,使用按钮列表来单击),但似乎都没有用。以下是脚本的相关部分。

while True:
    try:
        driver.find_element_by_class_name("mn-person-card__person-btn-ext.button-secondary-medium").click()
        time.sleep(1)
    except:
        pass
        print("trying to scroll")
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1) 

有什么想法吗?在我看来,代码似乎应该可以工作,而且好像还有其他东西在阻止成功。也许是错误或类似的。可能会提到我对所有这一切都很陌生,这是我试图制作的第一个操纵浏览器的脚本。

我正在使用 Firefox 驱动程序。完整的脚本可以在这里找到:http://pastebin.com/qtdNsRtz

提前致谢!

最佳答案

您应该使用 find_elements 来查找具有相同类的所有元素 试试这个来获取所有元素:

elements = driver.find_elements_by_class_name("mn-person-card__person-btn-ext.button-secondary-medium")

然后使用 for 循环点击它们中的每一个。例如:

for e in elements:
    e.click()

关于python - 通过 find_element_by_class_name 单击按钮不起作用 python selenium webdriver 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43021434/

相关文章:

python - python 中的函数什么都不返回

python - 如何将 NumPy 链接到 Eigen3,或 OpenBLAS、GotoBLAS2、ATLAS?

python - 与自动旋转密码数据库的 Django 连接

java - 我们如何使用 KLOV(Extent Reports) 将信息发送到 MongoDB AWS?

Selenium 网络驱动程序 : how to find the element in DOM based on custom attribute

python - 如果我有一段时间没有对它做任何事情,为什么我的文件会被关闭?

静态方法中的 Javascript "this"

java - 如何用java中的OOP设计一个RPG类系统?

java - Gson 不将 JSONarray 元素转换为类对象

c# - 使用 Selenium C# 的表中的行数