免責宣告:我在十多年后重新開始撰寫腳本,因此提前為這樣一個基本問題道歉,但非常需要和感謝幫助。
我最近試圖找到腳本來自動化我的求職,為此我找到了一個腳本,可以幫助我登錄到作業門戶并申請符合我條件的作業。
但我相信腳本沒有更新,因為我在運行它時遇到了一個錯誤:
NoSuchElementException: 沒有這樣的元素: 無法找到元素: {"method":"xpath","selector":"//*[@id="root"]/div[2]/div[2]/div/form /div[2]/input"}(會話資訊:chrome=98.0.4758.109)
我相信這是關于以下代碼行:
driver.get("https://www.naukri.com")
driver.find_element_by_xpath('//*[@id="login_Layer"]/div').click()
time.sleep(5)
driver.find_element_by_xpath('//*[@id="root"]/div[2]/div[2]/div/form/div[2]/input').send_keys("YOUR NAUKRI LOGIN ID")
driver.find_element_by_xpath('//*[@id="root"]/div[2]/div[2]/div/form/div[3]/input').send_keys("YOUR NAUKRI PASSWORD")
time.sleep(5)
driver.find_element_by_xpath('//*[@id="root"]/div[2]/div[2]/div/form/div[6]/button').click()
該腳本可以訪問 Naukri.com(作業門戶)并找到login_Layer ID的路徑,這將打開登錄側邊欄。但隨后它無法找到用戶名和密碼欄位。可能是因為網頁變了。
我正在嘗試檢查頁面元素并找到正確的 xpath 但沒有運氣。同樣,十多年來沒有接觸過 XML/HTML 或任何型別的 Web 開發(而且剛開始是新手),所以很難找到它。
任何指導或幫助將不勝感激。
期待您的回答。
提前致謝!
uj5u.com熱心網友回復:
是的,您的 XPath 已過時。
如果您使用的是 chromium 瀏覽器,請右鍵單擊要使用 XPath 的元素,然后單擊檢查。如果您的 DevTools 尚未打開,請執行此操作兩次。然后它將在頁面源中突出顯示您的元素。之后,右鍵單擊突出顯示的元素,復制并“復制 XPath”以更新您的腳本。
driver.find_element_by_xpath('//*[@id="root"]/div[2]/div[2]/div/form/div[2]/input').send_keys("YOUR NAUKRI LOGIN ID")
此語法應該仍然有效,但現代指南希望您使用它:
from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '//*[@id="root"]/div[3]/div[2]/div/form/div[2]/input').send_keys("YOUR NAUKRI LOGIN ID")
uj5u.com熱心網友回復:
wait=WebDriverWait(driver,20)
driver.get("https://www.naukri.com")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#login_Layer > div'))).click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'form > div:nth-child(2) > input'))).send_keys("user")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'form > div:nth-child(3) > input'))).send_keys("pw")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'button.btn-primary.loginButton'))).click()
你想使用 webdriver 等待并切換你的 xpath。
進口:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
uj5u.com熱心網友回復:
您的 XPATH 實際上不正確。
我建議你做的是盡可能寫出最具彈性的 XPath,因為 XPath 越長,它就越脆弱。基于大的 HTML 標記層次結構的 XPath 通常不是一個好主意,因為如果在中間引入新標記(新的 div 標記),它將中斷。我相信這個應用程式也發生了什么事。
為避免這種情況,您可以使用以下 xpaths。
driver.find_element_by_xpath("//label[text()='Email ID / Username']/../input").send_keys("YOUR NAUKRI LOGIN ID")
driver.find_element_by_xpath("//label[text()='Password']/../input").send_keys("YOUR NAUKRI PASSWORD")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/437235.html
