簡體   English   中英

無法使用 selenium 和 python 獲取 instagram 搜索框

[英]Can't get instagram search box using selenium and python

我一直在使用 python 和 selenium 構建一個 instagram 機器人。 我正在嘗試獲取搜索框元素並運行搜索。 然而,硒似乎無法檢測到該元素。 我已經嘗試通過每種可用的方法(Xpath、css 選擇器等)來獲取它。

這是我嘗試搜索它的方法之一(請注意,我還實現了 time.sleep 以提供頁面加載時間)。

def search():
DRIVER_PATH = '/Users/kiluas/selenium/driver/chromedriver'
webd = webdriver.Chrome(executable_path = DRIVER_PATH)
webd.find_element_by_css_selector('#react-root > section > nav > div._8MQSO.Cx7Bp > div > div > div.LWmhU._0aCwM > input')

這是它吐出的錯誤日志:

Traceback (most recent call last):
  File "autologinIg.py", line 80, in <module>
    loginInstagram('username', 'password', 3)
  File "autologinIg.py", line 45, in loginInstagram
    search()
  File "autologinIg.py", line 78, in search
    webd.find_element_by_css_selector('#react-root > section > nav > div._8MQSO.Cx7Bp > div > div > div.LWmhU._0aCwM > input')
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 598, in find_element_by_css_selector
    return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#react-root > section > nav > div._8MQSO.Cx7Bp > div > div > div.LWmhU._0aCwM > input"}
  (Session info: chrome=85.0.4183.121)

知道是什么導致了這種行為?

有時它們在每次運行中的類名都不同,因此我們無法自動化您的選擇器是:#react-root > section > nav > div._8MQSO.Cx7Bp > div > div > div.LWmhU._0aCwM > input'

div._8MQSO.Cx7Bp - 這在你的 css 選擇器中是否保持不變?

我可以在searchbox插入值。

誘導WebDriverWait () 並等待element_to_be_clickable () 和跟隨xpath

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//input[@placeholder='Search']"))).send_keys("text to be search")

您需要導入以下庫。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

請注意,如果您收到任何彈出通知,您需要在搜索前使用以下代碼。

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//button[text()='Not Now']"))).click()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM