iT邦幫忙

0

linux ubuntu19.3 執行.py會閃退

如提...執行.py的檔案會閃退
我有在第一行加#!/usr/bin/python3

pip3和python也有安裝,不知道為何會閃退
這支程式主要會自動開啟網頁,連到某個ip去做自動更新的功能
在windows可以正常運行,可是在linux就會閃退QQ

看更多先前的討論...收起先前的討論...
ccutmis iT邦高手 2 級 ‧ 2021-01-20 18:41:14 檢舉
有試過先設權限嗎,例如: chmod +x ./要執行的.py
DanSnow iT邦好手 1 級 ‧ 2021-01-20 20:59:34 檢舉
你可以先在終端機跑,看看有什麼錯誤訊息
To ccutmis
權限我後來有嘗試加了還是一樣

To DanSnow
用終端機執行也是閃退(root權限)


我想到我windwos有裝chromedriver linux要怎麼裝呢?
我下載linux版的chromedriver結果不知道要丟在哪

windows的chromedriver我是丟在python的資料夾理
但linux的python資料夾我找不到在哪QQ

chrome版本:80.0.3987.132 (正式版本) (64 位元)
DanSnow iT邦好手 1 級 ‧ 2021-01-21 11:01:46 檢舉
如果是 chromedriver 一般就放在 PATH 的某個資料夾就行,不確定是哪的話可以放 /usr/local/bin
ccutmis iT邦高手 2 級 ‧ 2021-01-21 13:38:06 檢舉
"但linux的python資料夾我找不到在哪QQ"
有個好用的指令叫作 which 例如
which python 你試試看
還有 which python 跟 which python3 可能是不同的東西
(在我電腦跑的結果如下)
$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.9/bin/python3
我成功啦~~謝謝DanSnow
To ccutmis
哦~~我學到了

我的結果是這樣
/usr/bin/python3
現在遇到了一個新問題...
執行後發現,chorme自動軟體控制可以成功開啟網頁,不過發現他不會自動輸入帳號、密碼

相同的程式拿到windows測試卻可以正常運行,我嘗試用spyder執行程式,有吐出一個錯誤

WebDriverException: unknown error: cannot determine loading status
from unknown error: missing or invalid 'entry.level'
(Session info: chrome=80.0.3987.132)
(Driver info: chromedriver=2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5),platform=Linux 5.0.0-32-generic x86_64)

看起來是Session info 和 Driver info版本合不起來?
可是我確定我下載的是ChromeDriver 80.0.3987.106
for 80版本chrome最新的chromedriver

goole結果大多也是叫我重下driver我也試過了

80版的有兩個
ChromeDriver 80.0.3987.106
ChromeDriver 80.0.3987.16

這兩個chromedriver我都有嘗試過了
echochio iT邦高手 1 級 ‧ 2021-01-25 21:59:18 檢舉
linux 下執行
google-chrome --version
可看到版本
linux 是 x64 沒錯吧 ?
chrome 我也被自動升級坑過 ... 最後發現用 firefox 比較穩
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
ccutmis
iT邦高手 2 級 ‧ 2021-01-22 11:48:47
最佳解答

我的結果是這樣
/usr/bin/python3

忘了說我的OS是 macos big sur (Apple M1) 勉強算 linux 吧

我參考網路搜尋的教學照著做就成功了(chromedriver已有支持m1),截圖如下:

test


步驟筆記 :

Step 1. 安裝 Selenium 模組

在終端機中,使用以下語法,即可自動安裝:

$ pip3 install selenium

安裝後先不要急著試,因為還要安裝瀏覽器的驅動程式,才能夠順利透過Python的IDE操作瀏覽器。

Step 2. 下載 Chrome Driver

下載前先到Chrome的「說明-關於Google Chrome」檢查版本編號,然後到這個網址下載跟自己版本相同的Driver:

http://chromedriver.chromium.org/

Step 3. 安裝 Chrome Driver

將 Step 2 下載的檔案解壓縮後 會得到一個檔名叫做「chromedriver」的Unix執行檔,我們要把這個檔案丟到 /usr/local/bin 這個路徑中。

(接下來這個我筆記的是 macos 的作法,如果是在一般 linux 系統 用終端機命令 cp 應該也可以用 把檔案複制到 /usr/local/bin 不過這個你就要自己試了)

[macos only] 在Finder中點選解壓縮後的 chromedriver ,然後按[command]+[c],接著按[shift]+[command]+[g]會出現"前往資料夾"對話方塊,輸入 /usr/local/bin ,確定路徑無誤再按[command]+[v]貼上項目即完成安裝。

Step 4. 匯入 Selenium 跟啟動 Chrome Driver

這部份沒什麼好說的 就是建一個 python 文件 然後貼入下列範例碼

from selenium import webdriver

# 輸入chrome driver 路徑
chromedriver = '/usr/local/bin/chromedriver'
# 啟動 chrome driver
dirver = webdriver.Chrome(chromedriver)
# 指定開啟網址
dirver.get("https://shopping.pchome.com.tw")

# 下指令: 點指定的連結文字
dirver.find_element_by_link_text("24h購物").click()

然後存檔,這邊我存成 testSelenium.py,接著給它設定執行權限:

chmod +x ./testSelenium.py

接著執行

python3 ./testSelenium.py

就能正常運作了!


結論:

  1. 建議您先別直接把你在windows上寫的東西套進來,先讓 selenium 跟 chromedriver 可以正常運作,然後再處理腳本內容的問題。
  2. 如果是每天運作的腳本,可能要把 google chrome 的自動更新關掉,以免它不小心升級造成腳本卡住。(google搜'google chrome 關閉自動更新')

參考教學網址:

https://medium.com/@brettlin_78528/%E7%94%A8-python-%E5%8C%AF%E5%85%A5-selenium-%E7%9A%84%E6%96%B9%E5%BC%8F-%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E7%94%A8mac-%E5%AE%89%E8%A3%9D-chromedriver-5d92121c02d7

我後來有發現原因
80版的有兩個
ChromeDriver 80.0.3987.106
ChromeDriver 80.0.3987.16

這個代表python偵測到有兩個chromedriver,以至於他不知道要用哪一個,把兩個檔案的chromedriver同步版本後(或者刪掉其中一個),就可以了,我是用whereis發現的

ccutmis iT邦高手 2 級 ‧ 2021-01-26 12:20:41 檢舉

恭喜 有找到解決方案就好

我要發表回答

立即登入回答