背景:
使用selenium寫自動化腳本時,在登錄后的新界面進行點擊一直報錯
內(nèi)容如下:
driver.find_element_by_xpath('//*[@id="15227789891964323"]/a[1]').click()
報錯如下:
NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"http://*[@id="15227789891964323"]/a[1]"}
(Session info: chrome=76.0.3809.87)
解決方案:
查找各方資料后,有幾種情況會造成報錯,以下為解決方案:
1、定位的頁面重新開了一個iframe,需要切換iframe,語句如下:
driver.switch_to.window(driver.window_handles[-1])
或者如下語句:
# 當前打開的所有窗口
windows = driver.window_handles
# 轉(zhuǎn)換到最新打開的窗口
driver.switch_to.window(windows[-1])
或者如下語句:
sreach_window=driver.current_window_handle
2、時間過短、操作時間過快,頁面還未加載完,需要加一個延時
# 延時加載
sleep(5)
3、定位的元素是動態(tài)的,相對值不斷變化,主要表現(xiàn)可能為一串數(shù)據(jù),或是字符加數(shù)據(jù),頁面加載一次變化一次,每次都不相同。
其他博主提供的方案:盡量避免用這樣的屬性值去定位,而采用這個元素下的其他固定不變的屬性值?;蚴窍蛏蠈硬檎遥捎肵path定位
4、定位頁面嵌入式元素,筆者就是在排除了多種情況、嘗試了多種方法后,確定可能是出現(xiàn)了這個問題,并在查閱其他博主的文章后,確定了如下解決方案:
#從frame中先切回主文檔
driver.switch_to.default_content()
#進入第一層frame
driver.switch_to.frame(driver.find_element_by_xpath('//*[@id="body"]/iframe'))
#操作第一層iframe下的元素,點擊元素
driver.find_element_by_xpath('//*[@id="sortable"]/li[4]').click()
關(guān)鍵在與找到并進入第一層,因為是嵌套,所以需要一步一步的進入頁面,從最外層向最里層,層層定位
來源于:https://www.cnblogs.com/pxj2018/p/9883721.html
5、出現(xiàn)Xpath編寫錯誤,但是目前chrome和firefox均提供xpath的復制服務,所以基本不太可能出現(xiàn)這種問題
那么如何測試并找出到底是哪個地方存在的問題呢?建議可以用已經(jīng)測試過的語句替代可能出現(xiàn)問題的地方,看能不能運行,或者每種可能情況都測試一遍,總會找到問題的,畢竟代碼的世界都是有因有果的。文章來源:http://www.zghlxwxcb.cn/news/detail-407001.html
以上,暫時為截止2022年5月30日使用過并且測試過的方案,以此記錄,以防忘記文章來源地址http://www.zghlxwxcb.cn/news/detail-407001.html
到了這里,關(guān)于selenium報錯Unable to locate element的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!