差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
rf:rf:wget [2018/01/21 00:30] tony [方法1: 透過外部程式wget] |
rf:rf:wget [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 6: | 行 6: | ||
===== How to? ===== | ===== How to? ===== | ||
==== 方法1: 透過外部程式wget ==== | ==== 方法1: 透過外部程式wget ==== | ||
- | 起初我們透過外部程式去達到我們的測試需求。要達成此目的,有幾個步驟: | + | 起初我們透過外部程式去達到測試需求。要達成此目的,有幾個步驟: |
- 測試環境可以執行wget。 | - 測試環境可以執行wget。 | ||
- 取得下載位置的連結。 | - 取得下載位置的連結。 | ||
行 14: | 行 14: | ||
\\ | \\ | ||
=== 步驟1: 測試環境可以執行wget === | === 步驟1: 測試環境可以執行wget === | ||
- | 大部分linux安裝起來就內建wget,沒有就自行安裝;windows可以從[[https://eternallybored.org/misc/wget/|這裡]]下載執行檔,將它放到你的測試環境中。\\ | + | 大部分linux安裝起來就有wget,如果沒有就自行安裝;而windows可以從[[https://eternallybored.org/misc/wget/|這裡]]下載執行檔,將它放到你的測試環境中。\\ |
\\ | \\ | ||
=== 步驟2: 取得下載位置的連結 === | === 步驟2: 取得下載位置的連結 === | ||
行 42: | 行 42: | ||
\\ | \\ | ||
=== 步驟5: 驗證內容 === | === 步驟5: 驗證內容 === | ||
- | 這部分就是看各位的業務需求去做assertion了。我的Keyword提供給大家參考: | + | 這部分就是看各位的業務需求去做assertion。我的Keyword提供給大家參考: |
<code> | <code> | ||
Download File Wit Wget | Download File Wit Wget | ||
行 59: | 行 59: | ||
Should Be Equal As Integers @{output}[0] 0 @{output}[1] | Should Be Equal As Integers @{output}[0] 0 @{output}[1] | ||
</code> | </code> | ||
- | 由於我們將預設連線修改為https,並且只允許TLS1.2,這導致在舊版本的Linux如RHEL6.0上無法透過預設的wget進行測試。因此改使用第二種方法來做wget。 | ||
==== 方法2: 透過HttpClient Library ==== | ==== 方法2: 透過HttpClient Library ==== | ||
- | httpclient-4.3.5 | + | 由於我們將預設連線修改為https,並且只允許TLS1.2,這導致在舊版本的Linux如RHEL6.0上無法透過預設的wget進行測試。因此改為自己實作TestLibrary去提供wget的功能。我所使用的HttpClient版本為httpclient-4.3.5,我直接將程式分享給各位,這可能會根據你的需求或library版本需要做些微調:\\ |
+ | \\ | ||
+ | Robot Keyword: | ||
<code> | <code> | ||
Download File | Download File | ||
行 72: | 行 73: | ||
log ${ret} | log ${ret} | ||
</code> | </code> | ||
+ | Test Library WgetLibrary: | ||
<code java> | <code java> | ||
import java.io.File; | import java.io.File; | ||
行 88: | 行 90: | ||
import org.apache.http.impl.client.HttpClientBuilder; | import org.apache.http.impl.client.HttpClientBuilder; | ||
import org.apache.http.impl.cookie.BasicClientCookie; | import org.apache.http.impl.cookie.BasicClientCookie; | ||
- | |||
- | import com.supermicro.ssm.common.Cleaner; | ||
- | |||
public class WgetLibrary { | public class WgetLibrary { | ||
行 129: | 行 128: | ||
BasicCookieStore cookieStore = createCookieStore(cookies, domain, path); | BasicCookieStore cookieStore = createCookieStore(cookies, domain, path); | ||
if( cookieStore != null ) { | if( cookieStore != null ) { | ||
- | System.out.println("set cookie: " + cookies); | ||
builder.setDefaultCookieStore(cookieStore); | builder.setDefaultCookieStore(cookieStore); | ||
} | } | ||
行 135: | 行 133: | ||
httpClient = builder.build(); | httpClient = builder.build(); | ||
response = httpClient.execute(new HttpGet(url)); | response = httpClient.execute(new HttpGet(url)); | ||
- | System.out.println("destfile: " + new File(destFile).getAbsolutePath()); | ||
fos = new FileOutputStream(new File(destFile)); | fos = new FileOutputStream(new File(destFile)); | ||
IOUtils.copy(response.getEntity().getContent(), fos); | IOUtils.copy(response.getEntity().getContent(), fos); | ||
行 155: | 行 152: | ||
* [[https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/conn/ssl/TrustSelfSignedStrategy.html|javadoc - TrustSelfSignedStrategy]] | * [[https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/conn/ssl/TrustSelfSignedStrategy.html|javadoc - TrustSelfSignedStrategy]] | ||
* [[http://robotframework.org/SeleniumLibrary/SeleniumLibrary.html|RobotFramework - SeleniumLibrary]] | * [[http://robotframework.org/SeleniumLibrary/SeleniumLibrary.html|RobotFramework - SeleniumLibrary]] | ||
+ | * [[http://www.baeldung.com/httpclient-4-cookies|HttpClient 4 – Send Custom Cookie]] | ||
===== ===== | ===== ===== | ||
---- | ---- |