1. 查看Linux 版本 2. 安裝selemium 2.1 通過pip 安裝selenium,先安裝pip: 2.2 如果提示pip更新則執行如下命令: 2.3 pip安裝selenium 2.4 卸載Centos自帶的Mozilla firefox 2.5 下載、解壓firefox 2.6 創 ...
1. 查看Linux 版本
[root@penguin selenium]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
2. 安裝selemium
2.1 通過pip 安裝selenium,先安裝pip:
[root@penguin selenium]#yum -y install epel-release
[root@penguin selenium]#yum -y install python-pip
2.2 如果提示pip更新則執行如下命令:
[root@penguin selenium]#pip install --upgrade pip
2.3 pip安裝selenium
[root@penguin src]# pip install selenium
2.4 卸載Centos自帶的Mozilla firefox
mv /etc/firefox/ /etc/firefox.bak mv /usr/lib64/firefox/ /usr/lib64/firefox.bak mv /usr/bin/firefox /usr/bin/firefox.old
2.5 下載、解壓firefox
[root@penguin src]# ls -l /usr/local/src/firefox-66.0.3.tar.bz2 -rw-r--r-- 1 root root 62089056 Apr 30 16:47 /usr/local/src/firefox-66.0.3.tar.bz2
[root@penguin src]#tar xjvf firefox-66.0.3.tar.bz2
2.6 創建虛擬顯示
yum install Xvfb libXfont xorg-x11-fonts* pip3 install pyvirtualdisplay
2.7 新建符號鏈接,測試firefox用xshell啟動
[root@penguin src]#cd firefox/
[root@penguin src]#ln -s /usr/lib64/firefox/firefox /usr/bin/firefox
[root@penguin selenium]# firefox -version
Mozilla Firefox 66.0.3
[root@penguin src]#firefox 此處無報錯firefox正常啟動,如果有錯誤請在/etc/hosts保證有如下一行:
127.0.0.1 localhost
2.8 安裝google chrome, 解決root無法運行chrome
yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
[root@penguin selenium]# google-chrome -version
Google Chrome 74.0.3729.108
解決root無法運行chrome
vi /usr/bin/google-chrome
在文件尾部添加:
if [[ -n "$CHROME_USER_DATA_DIR" ]]; then # Note: exec -a below is a bashism. exec -a "$0" "$HERE/chrome" \ --user-data-dir="$CHROME_USER_DATA_DIR" "$@" else exec -a "$0" "$HERE/chrome" --user-data-dir="/root/.config/google-chrome/" \ "$@" --no-sandbox fi
2.9 下載、配置firefox對應的webdriver--geckodriver
cd /usr/local/src/ tar xzvf geckodriver-v0.24.0-linux64.tar.gz cp /usr/local/bin/geckodriver /usr/bin/geckodriver
2.10 下載配置google chrome對應的webdriver--chromedriver_linux64
下載chromedriver_linux64.zip
解壓,配置如下:
cp /usr/local/src/chromedriver_linux64/chromedriver /usr/bin/
root@penguin selenium]# chromedriver -version
ChromeDriver 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29})
3. 測試
3.1 編寫代碼測試firefox
#!/usr/bin/env python3 from selenium import webdriver driver = webdriver.Firefox() driver.get('http://www.163.com') print(driver.title) #driver.quit()
3.2 編寫代碼測試google chrome
#!/usr/bin/env python3 from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com') print(driver.title) driver.quit()
4. 異常問題解決
firefox:
File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__ keep_alive=True) File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__ self.start_session(capabilities, browser_profile) File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
webdriver與firefox版本不匹配,可以查找對應的webdriver版本解決
Traceback (most recent call last): File "./test.py", line 8, in <module> driver = webdriver.Firefox() File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__ self.service.start() File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 104, in start raise WebDriverException("Can not connect to the Service %s" % self.path) selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service geckodriver
卸載系統自帶的firefox,重新安裝並設置為root可以啟動,同時參考步驟2.7/etc/hosts的設置
chrome:
主要問題由root不能啟動google-chrome導致,配置no-sandbox選項即可,具體參考步驟2.8