簡體   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