| Python+pycharm常見報錯 |
|
| 報錯內容: |
Element is not currently visible and may not be manipulated |
| 場景: |
定位彈窗上面的Select元素 |
| 原因分析: |
彈窗彈出延時,彈窗上面的元素無法操作 |
| 解決方法: |
sleep(2)等待加載 |
|
|
|
| 報錯內容: |
'Element ' is not clickable at point (1273, 576). Other element would receive the click |
| 場景: |
|
| 原因分析: |
頁面加載完成后要操作的元素被別的元素擋住了,導致無法點擊 |
| 解決方法: |
調整屏幕分辨率、瀏覽器大小,或者用JS操作滾動條讓元素完全漏出來
|
|
|
|
| 報錯內容: |
failed to change window state to maximized, current state is normal |
| 場景: |
driver.maximize_window() |
| 原因分析: |
driver已經最大化過了,導致執行報錯 |
| 解決方法: |
先檢查下driver有沒有最大化過,或者先作下判斷driver大小 |
|
|
|
| 報錯內容: |
stale element reference: element is not attached to the page document |
| 場景: |
定位元素時報錯 |
| 原因分析: |
定位元素之前頁面刷新過,導致頁面失效 |
| 解決方法: |
加個等待,然后元素重新定位就好 |
|
|
|
| 報錯內容: |
An invalid or illegal selector was specified |
| 場景: |
定位元素時發生 |
| 原因分析: |
用錯了選擇器,如:xpth的路徑用了 by_css_selector |
| 解決方法: |
使用正確的選擇器 |
|
|
|
| 報錯內容: |
Unable to find element on closed window |
| 場景: |
代碼沒有改動,chrome可以運行 切換到IE就報錯 |
| 原因分析: |
IE的兼容性問題,頁面URL重定向引起。例:http://google.cn 重定向為http://google.cn/login |
| 解決方法: |
暫無, |
|
|
|
| 報錯內容: |
'NoneType' object has no attribute 'test_one' TypeError: don't know how to make test from: None |
| 場景: |
unittest和paramunittest(參數化模塊)引用這2個模塊在pycharm中運行時報錯 |
| 原因分析: |
鼠標右鍵->運行項目 導致出現上述報錯,主要是光標沒有停在
這個位置運行導致 找不到啟動位置 |
| 解決方法: |
在如圖位置右鍵->運行,即可以正常 |
|
|
|
| 報錯內容: |
unknown error: cannot focus element 無法聚焦元素 |
| 場景: |
定位126郵箱【https://mail.126.com/index_alternate.htm】登錄文本框時出現,文本框可以點擊,但是send_keys失敗 |
| 原因分析: |
原因是126郵箱文本框前面蒙了一層label標簽,導致定位不到文本框 |
| 解決方法: |
有兩種:1、用【https://mail.126.com/】這個網址,沒有這種蒙層; 2、用模擬鍵盤操作,可以輸入 |
|
|
|
| 報錯內容: |
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 41: illegal multibyte sequence |
| 場景: |
open(filepath) 時出現該報錯, |
| 原因分析: |
文件中帶有中文字符無法解析,導致報錯 |
| 解決方法: |
改為:open(filepath,encoding='utf-8') 指定編碼格式即可 |
|
|
|
| 報錯內容: |
unknown error: chrome failed to start |
| 場景: |
創建瀏覽器實例的時候報錯,如圖
|
| 原因分析: |
原因有很多種: 1、 chrome與chromedriver版本不匹配; 2、 chromedriver路徑沒有添加到環境變量 |
| 解決方法: |
針對第一種情況,保證2者匹配即可; 第二種情況,可以把chromedriver添加到環境變量,或者在實例化的時候,指定chromedriver的路徑,如圖:
|
|
|
|
| 報錯內容: |
'NoneType' object is not iterable |
| 場景: |
![]() |
| 原因分析: |
返回值為None,卻用來做for循環的迭代,故報錯。 |
| 解決方法: |
調用函數時要查看,返回值是否符合預期 |
|
|
|
| 報錯內容: |
'NoneType' object has no attribute 'title' |
| 場景: |
|
| 原因分析: |
如圖,aa()函數返回值為None ,因為NoneType沒有title屬性,所以報錯 |
| 解決方法: |
檢查調用函數的aa(),保證返回值符合預期 |
|
|
|
| 報錯內容: |
invalid literal for int() with base 10: '' |
| 場景: |
![]() |
| 原因分析: |
如圖,mobile為空字符串,轉換int時報該錯誤 |
| 解決方法: |
避免出現這種空字符串轉換的情況,或者用try模塊忽視掉該錯誤 |
|
|
|
| 報錯內容: |
Cannot navigate to invalid URL |
| 場景: |
使用這個方法driver.get() 的時候會出現 |
| 原因分析: |
域名前面沒有加【https://】導致的 |
| 解決方法: |
加上http協議就不報該錯誤了,可以正常訪問了 |
|
|
|
| 報錯內容: |
element not interactable |
| 場景: |
定位div彈窗里面元素的時候會遇到 |
| 原因分析: |
是因為需要定位的元素在頁面中被隱藏了,比如(我的是定位百度賬號退出按鈕,由於,退出按鈕被隱藏,只有當鼠標移動到用戶賬號時,才顯示出退出按鈕) |
| 解決方法: |
解決辦法就是添加鼠標懸浮定位功能, |







