2016-11-04

[Selenium] How to solve org.openqa.selenium.remote.ProtocolHandshake createSession problem

    近期用 Selenium 在沒有更新任何源碼的情況,再次執行後遇到以下錯誤:


Starting ChromeDriver 2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129) on port 21975
Only local connections are allowed.
十一月 04, 2016 1:55:08 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
資訊: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
十一月 04, 2016 1:55:10 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
資訊: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.NoSuchSessionException: no such session
  (Driver info: chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 4 milliseconds
Build info: version: '3.0.0-beta4', revision: '3169782', time: '2016-09-29 10:30:04 -0700'


    解法是要將 ChromeDriver 2.23 更新到 2.25 即可,不過這點還滿弔詭的,因為我個人並沒有更動到任何既有源碼或更新 Selenium 套件,代表 ChromeDriver 本身一定有做一些檢查,這點有空再來研究。

[額外資訊]

2016-11-03

Ubuntu安裝Java JDK 7或JDK 8

介紹於 Ubuntu 14.04 / 16.04 上安裝 Java JDK 7 / 8 的方法。

[說明]
當網路環境處於離線,或不一定直接能存取到internet仰賴proxy時,使用ppa的安裝基本會失效,乾脆到官網上下載 jdk 檔案然後直接進行設定反而是最快的做法。

[步驟]
  1. 請至官網下載JDK,我們這裡用 jdk1.8.0_111 這個版本作為示範,請自行替換版號。
  2. 建立 Ubuntu 的 jvm 目錄,指令:
    • #sudo mkdir /usr/lib/jvm
  3. 將下載的 jdk 檔案解壓縮到 jvm 目錄,指令:
    • #sudo tar -zxvf jdk-8u111-linux-x64.tar.gz -C /usr/lib/jvm
  4. 再來要將 java 預設路徑告知系統,請:
    • #sudo vim ~/.bashrc
    • 添加以下內容
    •        
      export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111
      export JRE_HOME=${JAVA_HOME}/jre
      export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
      export PATH=${JAVA_HOME}/bin:$PATH
      
      
    • 使環境變數生效
    • #source ~/.bashrc
  5. 然後執行以下步驟,讓 Ubuntu 認得這個版本的 JDK
    • #sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_111/bin/java 300
    • #sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_111/bin/javac 300  

2016-11-02

[Ubuntu] 設定ssh可遠端用密碼登入

    某些版本的Ubuntu預設沒有開啟ssh遠端用帳密登入的權限,所以當你使用Puttie等連線軟體的時候會遇到登入錯誤,解法如下:

  1. 直接到Server上登入Ubuntu Console
  2. #sudo vim /etc/ssh/sshd_config
  3. 將 PasswordAuthentication 變數由 no 改為 yes
  4. 重啟ssh service,指令:/etc/init.d/ssh restart
  5. 即可由遠端透過ssh登入
  6. #sudo -s
  7. #passwd