亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Chromedriver 和 Selenium Python 在 Instagram

如何使用 Chromedriver 和 Selenium Python 在 Instagram

Cats萌萌 2022-12-06 16:46:59
這是經過檢查的源代碼input aria-label="Phone number, username, or email" aria-required="true" autocapitalize="off" autocorrect="off" maxlength="75" name="username" type="text" class="_2hvTZ pexuQ zyHYP" value=""我試過這段代碼運行driver = webdriver.Chrome()driver.get('https://www.instagram.com/')driver.find_element_by_xpath("//input[@name=\"username\"]").send_keys(username)driver.find_element_by_xpath("//input[@name=\"password\"]").send_keys(pw)driver.find_element_by_xpath('//button[@type="submit"]').click()但是有這樣的錯誤selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@name="username"]"}  (Session info: chrome=83.0.4103.61)我的 chromedriver 和 chrome 版本匹配,并按照說明查找元素。為什么會出現此錯誤?
查看完整描述

4 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

Instagram應用程序是通過React元素構建的。因此,在您開始搜索登錄元素時調用 url 之后,您將面臨NoSuchElementException


解決方案

要使用一組有效的憑據在Instagram中登錄,您需要引入WebDriverWait并且element_to_be_clickable()您可以使用以下 定位器策略

使用XPATH:


driver.get("https://www.instagram.com/")

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='username']"))).send_keys("username")

driver.find_element_by_xpath("//input[@name='password']").send_keys("password")

driver.find_element_by_xpath("//button/div[text()='Log In']").click()

注意:您必須添加以下導入:


from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC

瀏覽器快照:

http://img1.sycdn.imooc.com//638f01ab0001450713330530.jpg

查看完整回答
反對 回復 2022-12-06
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

觀察打開 instagram 主頁時,它會在登錄表單上顯示微調器片刻,然后顯示字段。因此,您需要在腳本中管理同步。


在您的代碼中使用顯式等待,直到所需字段準備好進行交互。


username = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@name='username']")))

username.send_keys('username')

password = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@name='password']")))

password.send_keys('pw')

需要導入以下包


from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC


查看完整回答
反對 回復 2022-12-06
?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

試試下面的代碼:


driver = webdriver.Chrome()

driver.get('https://www.instagram.com/')

txt_user = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'username')))

txt_user.send_keys('yourUserName')

txt_pwd = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'password')))

txt_pwd.send_keys('yourPassword')

btn_submit = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[type="submit"]')))

btn_submit.click()

導入后:


from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC


查看完整回答
反對 回復 2022-12-06
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.Chrome()  

driver.get('https://www.instagram.com/')

element = WebDriverWait(driver, 2).until(

    EC.presence_of_element_located((By.ID, "//input[@name=\"username\"]"))

)

element.sendkeys('user')


查看完整回答
反對 回復 2022-12-06
  • 4 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號