繁体   English   中英

按 find_element_by_class_name 单击按钮不起作用 python selenium webdriver 不起作用

[英]Click button by find_element_by_class_name not working python selenium webdriver NOT working

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

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

我发现找到按钮元素的最佳方法是通过 find_element_by_class_name(),因为所有连接按钮都具有相同的 class。 我还尝试使用 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()

您尝试使用find_element_by_class_name定位器的方式不正确,因为该定位器不支持其中的复合类。

如果class属性具有多个类名,则需要使用xpathcssSelector

driver.find_element_by_xpath("//button[@class='mn-person-card__person-btn-ext button-secondary-medium']").click()

这对我有用。

from selenium.webdriver.common.by import By
find_element(By.CLASS_NAME, "class name")

暂无
暂无

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

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