我正在創建一個 Instagram 機器人,但不知道如何導航到下一篇文章。
這是我嘗試過的
#Attempt 1
next_button = driver.find_element_by_class_name('wpO6b ')
next_button.click()
#Attempt 2
_next = driver.find_element_by_class_name('coreSpriteRightPaginationArrow').click()
兩個都沒有作業,我得到了NoSuchElementException或ElementClickInterceptedException 。我需要在這里做哪些更正?
這是我試圖點擊的按鈕(進入下一篇文章)

uj5u.com熱心網友回復:
我已經檢查了您的類名 coreSpriteRightPaginationArrow,但找不到任何具有該確切類名的元素。但是我部分地看到了班級名稱。因此,如果您嘗試使用 XPath contains 可能會有所幫助,如下所示。
//div[contains(@class,'coreSpriteRight')]
另一個使用 wpO6b 類的 xpath。有 10 個元素具有相同的類名,因此使用 @aria-label='Next' 過濾
//button[@class='wpO6b ']//*[@aria-label='Next']
試試這些,讓我知道它是否有效。
我已經嘗試過下面的代碼,它點擊了 10 次下一步按鈕
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
if __name__ == '__main__':
driver = webdriver.Chrome('/Users/yosuvaarulanthu/node_modules/chromedriver/lib/chromedriver/chromedriver') # Optional argument, if not specified will search path.
driver.maximize_window()
driver.implicitly_wait(15)
driver.get("https://www.instagram.com/instagram/");
time.sleep(2)
driver.find_element(By.XPATH,"//button[text()='Accept All']").click();
time.sleep(2)
#driver.find_element(By.XPATH,"//button[text()='Log in']").click();
driver.find_element(By.NAME,"username").send_keys('username')
driver.find_element(By.NAME,"password").send_keys('password')
driver.find_element(By.XPATH,"//div[text()='Log In']").click();
driver.find_element(By.XPATH,"//button[text()='Not now']").click();
driver.find_element(By.XPATH,"//button[text()='Not Now']").click();
#it open Instagram page and clicks 1st post and then it will click next post button for the specified range
driver.get("https://www.instagram.com/instagram/");
driver.find_element(By.XPATH,"//div[@class='v1Nh3 kIKUG _bz0w']").click();
for page in range(1,10):
driver.find_element(By.XPATH,"//button[@class='wpO6b ']//*[@aria-label='Next']" ).click();
time.sleep(2)
driver.quit()
uj5u.com熱心網友回復:
如下圖所示,該wp06b按鈕位于許多 div 中,在這種情況下,您可能需要提供Selenium相同的 div 路徑才能訪問該按鈕或給它一個XPath.

它不是最優化的,但應該可以正常作業。
driver.FindElement(By.XPath("(.//*[normalize-space(text()) and normalize-space(.)='? 2022 Instagram from Meta'])[1]/following::*[name()='svg'][2]")).Click();
編輯:請注意,XPath導致 svg,所以基本上我們點擊 svg 元素本身,而不是在按鈕中。
uj5u.com熱心網友回復:
如您所見,下一篇文章的右箭頭按鈕元素定位器正在第一篇文章和其他文章的下一頁按鈕之間變化。
如果是第一篇文章,你應該使用這個定位器:
//div[contains(@class,'coreSpriteRight')]
而對于所有其他帖子,您應該使用此定位器
//a[contains(@class,'coreSpriteRight')]
第二個元素//a[contains(@class,'coreSpriteRight')]也將出現在第一個帖子頁面上,但是該元素在那里不可點擊,它已啟用并且只能在非第一頁上點擊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/404722.html
標籤:
