![](/img/trans.png)
[英]Python selenium webdriver find_element_by_class_name not working
[英]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屬性具有多個類名,則需要使用xpath
或cssSelector
:
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.