差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

rf:rf:wget [2018/01/20 13:13]
tony
rf:rf:wget [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​RobotFramework}} 
-====== wget ====== 
-===== Problem ===== 
-網站大都有提供下載功能,驗證下載功能與內容是否正常是必要的測試項目之一。然而,SeleniumLibrary並沒有提供類似的keyword。本篇文章分享我們解決這個問題的歷程。 
-httpclient-4.3.5\\ 
-${wget} --cookies=on --no-check-certificate --load-cookies cookies --output-document ${fileName} \ ${fileUrl} 
-===== How to? ===== 
-==== 透過外部程式 ==== 
-起初我們透過外部程式去達到我們需求。大部分linux安裝起來就內建wget;windows可以從[[https://​eternallybored.org/​misc/​wget/​|這裡]]下載執行檔。 
- 
- 
-==== 透過HttpClient Library ==== 
-<​code>​ 
-Download File 
-    [Arguments] ​   ${fileUrl} ​   ${fileName} 
-    Log    ${fileUrl} 
-    ${cookies} ​   Get Cookies 
-    @{jessonid} ​   Split String ​   ${cookies} ​   JSESSIONID= 
-    ${location} ​   Get Location IP 
-    ${ret} ​   wget    ${fileUrl} ​   ${fileName} ​   JSESSIONID=@{jessonid}[1] ​   ${location} 
-    log    ${ret} 
-</​code>​ 
-<code java> 
-import java.io.File;​ 
-import java.io.FileOutputStream;​ 
- 
-import javax.net.ssl.SSLContext;​ 
- 
-import org.apache.commons.io.IOUtils;​ 
-import org.apache.http.client.methods.CloseableHttpResponse;​ 
-import org.apache.http.client.methods.HttpGet;​ 
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;​ 
-import org.apache.http.conn.ssl.SSLContextBuilder;​ 
-import org.apache.http.conn.ssl.TrustSelfSignedStrategy;​ 
-import org.apache.http.impl.client.BasicCookieStore;​ 
-import org.apache.http.impl.client.CloseableHttpClient;​ 
-import org.apache.http.impl.client.HttpClientBuilder;​ 
-import org.apache.http.impl.cookie.BasicClientCookie;​ 
- 
-import com.supermicro.ssm.common.Cleaner;​ 
- 
- 
-public class WgetLibrary {  
- public static final String ROBOT_LIBRARY_SCOPE = "TEST CASE"; 
- public static final String ROBOT_LIBRARY_VERSION = "​1.0.0";​ 
-  
- private BasicCookieStore createCookieStore(String cookies, String domain, String path){ 
- if( cookies == null || cookies.isEmpty() ) 
- return null; 
- 
- BasicCookieStore cookieStore = new BasicCookieStore();​ 
- String[] cookiePairs = cookies.split(";"​);​ 
- for( String cookiePair : cookiePairs){ 
- String[] cookieToken = cookiePair.split("​="​);​ 
- BasicClientCookie cookie = new BasicClientCookie(cookieToken[0],​ cookieToken[1]);​ 
- cookie.setDomain(domain);​ 
- cookie.setPath(path);​ 
- cookieStore.addCookie(cookie);​ 
- } 
- return cookieStore;​ 
- } 
-  
- public long wget(String url, String destFile, String cookies, String domain){ 
- return wget(url, destFile, cookies, domain, "/"​);​ 
- } 
-  
- public long wget(String url, String destFile, String cookies, String domain, String path){ 
- CloseableHttpClient httpClient = null; 
- FileOutputStream fos = null; 
- CloseableHttpResponse response = null; 
- try { 
- HttpClientBuilder builder = HttpClientBuilder.create();​ 
-  
- SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null,​ new TrustSelfSignedStrategy()).build();​ 
- SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext,​ SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);​ 
- builder.setSSLSocketFactory(sslSocketFactory);​ 
-  
- BasicCookieStore cookieStore = createCookieStore(cookies,​ domain, path); 
- if( cookieStore != null ) { 
- System.out.println("​set cookie: " + cookies); 
- builder.setDefaultCookieStore(cookieStore);​ 
- } 
- 
- httpClient = builder.build();​ 
- response = httpClient.execute(new HttpGet(url));​ 
- System.out.println("​destfile:​ " + new File(destFile).getAbsolutePath());​ 
- fos = new FileOutputStream(new File(destFile));​ 
- IOUtils.copy(response.getEntity().getContent(),​ fos); 
- return response.getStatusLine().getStatusCode();​ 
- } catch( Exception e ){ 
- throw new RuntimeException(e);​ 
- } finally { 
- Cleaner.close(fos);​ 
- Cleaner.close(response);​ 
- Cleaner.close(httpClient);​ 
- } 
- } 
-} 
-</​code>​ 
-===== Reference ===== 
-  * [[https://​unix.stackexchange.com/​questions/​36531/​format-of-cookies-when-using-wget|Format of cookies when using wget?]] 
-  * [[https://​memorynotfound.com/​ignore-certificate-errors-apache-httpclient/​|How to Ignore Certificate Errors in Apache HttpClient 4.5]] 
-  * [[https://​hc.apache.org/​httpcomponents-client-ga/​httpclient/​apidocs/​org/​apache/​http/​conn/​ssl/​NoopHostnameVerifier.html|javadoc - NoopHostnameVerifier]] 
-  * [[https://​hc.apache.org/​httpcomponents-client-ga/​httpclient/​apidocs/​org/​apache/​http/​conn/​ssl/​TrustSelfSignedStrategy.html|javadoc - TrustSelfSignedStrategy]] 
-=====    ===== 
----- 
-\\ 
-~~DISQUS~~