有人可以向我解釋為什么這種方法不起作用嗎?
之前我是用這種方式在推特登錄頁面輸入郵箱,就可以作業了。
email = bot.find_element_by_xpath(
'//*[@id="layers"]/div/div/div/div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div[1]/div/div[5]/label/div/div[2]/div/input'
)
# sends the email to the email input
email.send_keys(self.email)
# executes RETURN key action
email.send_keys(Keys.RETURN)
但現在它不起作用并回傳此錯誤:
selenium.common.exceptions.NoSuchElementException:訊息:沒有這樣的元素:無法找到元素:{"method":"xpath","selector":"//*[@id="layers"]/div/div/div /div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div 1 /div/div[5]/label/div/div[2]/ div/輸入"}
所以我嘗試再次從 twitter 登錄網站復制 xpath,如下圖所示: 復制用戶名文本框的 Xpath
并對代碼進行如下修改:
email = bot.find_element_by_xpath(
'//*[@id="react-root"]/div/div/div/main/div/div/div/div[2]/div[2]/div[1]/div/div/div[5]/label/div/div[2]/div/input'
)
# sends the email to the email input
email.send_keys(self.email)
# executes RETURN key action
email.send_keys(Keys.RETURN)
而且我仍然遇到了同樣的無法定位元素錯誤:
selenium.common.exceptions.NoSuchElementException:訊息:沒有這樣的元素:無法找到元素:{"method":"xpath","selector":"//*[@id="react-root"]/div/div /div/main/div/div/div/div[2]/div[2]/div 1 /div/div/div[5]/label/div/div[2]/div/input"}
我仍然是使用 Selenium 的初學者,想知道為什么會發生這種情況以及解決此問題的可能方法。非常感謝您花時間閱讀本文!
uj5u.com熱心網友回復:
您永遠不應該使用瀏覽器 dv 工具自動創建的定位器。
如您所見,它們非常脆弱且不可靠。
對于用戶名欄位,您可以使用此定位器:
//input[@autocomplete='username']
所以你的硒命令可以是
email = bot.find_element_by_xpath('//input[@autocomplete="username"]')
我建議您學習如何創建正確的定位器。
有幾個關于這個的教程,例如你可以在這里找到其中的一些
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/438441.html
